【问题标题】:How to set one bit of a column in every record using Doctrine 1.2?如何使用 Doctrine 1.2 在每条记录中设置一个列?
【发布时间】:2011-08-04 14:21:09
【问题描述】:

我正在尝试构建这个 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);

还有许多类似的变体,但都没有成功。请帮我解决这个问题。

【问题讨论】:

    标签: doctrine doctrine-1.2


    【解决方案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,这里是 the documentation on PDO::query

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多