Yii updateAll()将1添加到行的当前值

时间:2012-11-13 14:45:31

标签: php yii

简单地说,我正在尝试这样做:

$widgetsUsed->updateAll(array(
                'position'=>'- 1'
            ),
            "position > {$position} AND sidebar_id = {$sidebar_id}"
         );

有人知道这是否有效,或者提供一些其他建议如何实现?

很难调试这个,因为在我的数据库中,我无法准确地确定chaning的值。所以我希望这里的任何人都能直接知道如何做到这一点。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以尝试以下

Yii::app()->db->commandBuilder->createUpdateCounterCommand('{{myTable}}', array(
  'position' => 1, // -1 for decrementing
  new CDbCriteria(array(
        "condition" => "position > :pos AND sidebar_id = :id",
        "params" => array(
            "pos"=>$position, 
            "id"=>$sidebar_id
        )
    ))
));

如果您有higher version of Yii,则可以使用http://www.yiiframework.com/wiki/282/using-counters-with-activerecord/