没有选择活动记录的更新yii

时间:2013-01-05 20:36:55

标签: activerecord yii criteria

我尝试更新num_of_gifts而不选择使用yii活动记录和CDbCriteria 这是我的代码:

$attributes = array('num_of_gifts' => 'num_of_gifts'+1);
$condition = 'bla bla';
$params = array(bla bla);
Gifts::model()->updateAll($attributes, $condition, $params);

所有我在num_of_gifts单元格中得到“1”, 是否有可能将1增加到num_of_gifts?或者我需要选择num_of_gifts的数量并在使用更新后?

2 个答案:

答案 0 :(得分:1)

如果您只是更新计数器,则可以使用Yii的updateCounters方法。

更新所有的示例:

Gifts::model()->updateCounters(array('num_of_gifts'=>1));

该方法需要更新特定记录的条件,但如果您不包含条件,则会更新所有记录。

[编辑]

如果要根据条件更新选定的记录,格式为:

Gifts::model()->updateCounters(
        array('num_of_gifts'=>1),
        array('condition' => "param = :param"),
        array(':param' => 'paramvalue'),
    );

答案 1 :(得分:0)

自Yii 1.1.8以来,有一种更新计数器的简化方法:

Gifts::model()->saveCounters(array('num_of_gifts'=>1));

请参阅:

http://www.yiiframework.com/wiki/282/using-counters-with-activerecord/ http://www.yiiframework.com/doc/api/1.1/CActiveRecord#saveCounters-detail