如何使用Doctrine 1.2在每个记录中设置一个列的位?

时间:2011-08-04 14:21:10

标签: doctrine doctrine-1.2

我正在尝试构建此SQL查询:

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

使用Doctrine 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);

许多类似的变化没有成功。请帮助mi。

1 个答案:

答案 0 :(得分:1)

实现这一目标的最简单方法是从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上的the documentation就行了。