Как установить один бит столбца в каждой записи, используя Doctrine 1.2? - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь построить этот SQL-запрос:

update shop_product set flags=flags^(flags&1024);

Использование Доктрины 1.2.

Я пробовал эти методы:

Doctrine_Query::create()
    ->update('Model_ShopProduct p')
    ->set('p.flags', 'p.flags^(p.flags&' . $flag);

также:

Doctrine_Query::create()
    ->update('Model_ShopProduct p')
    ->set('p.flags', new Doctrine_Expression('p.flags^(p.flags&?'), $flag);

И много подобных вариаций безуспешно. Пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 26 августа 2011

Самый простой способ добиться этого - восстановить соединение с базой данных из Doctrine и выполнить необработанный sql-запрос, например,

$connection = Doctrine_Manager::getCurrentConnection()->getDbh();
//connection is an ordinary PDO object
$connection->query("update shop_product set flags=flags^(flags&1024);");

Если вы не знакомы с PDO, вот документация на PDO::query.

...