Activerecord 更新而不选择活动记录yii

Activerecord 更新而不选择活动记录yii,activerecord,yii,criteria,Activerecord,Yii,Criteria,我尝试在不选择使用yii活动记录和CDB标准的情况下更新礼品数量 这是我的代码: $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 cell得到的都是“1”, 有可能增加

我尝试在不选择使用yii活动记录和CDB标准的情况下更新礼品数量 这是我的代码:

$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 cell得到的都是“1”,
有可能增加1到数量的礼物吗?或者我需要选择礼物的数量,然后使用更新?

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

更新所有文件的示例:

Gifts::model()->updateCounters(array('num_of_gifts'=>1));
该方法需要一个条件来更新特定记录,但如果不包含条件,它将更新所有记录

[编辑]

如果要根据条件更新所选记录,格式如下:

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

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

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


你真的想写
'num\u of\u gifts'+1
?您在此处添加了一个字符串和一个整数。谢谢,效果很好,但您有一点错误,条件不是数组。很抱歉,您是对的。我从wiki页面复制了格式,但格式不正确!这将教会我:)不过,我很高兴你弄明白了。还可以在特定模型上使用saveCounters()。那是我通常做的事。