【问题标题】:update without select active record yii更新而不选择活动记录 yii
【发布时间】:2013-01-05 20:36:55
【问题描述】:

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

$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 的数量,然后使用更新?

【问题讨论】:

  • 你真的是想写'num_of_gifts'+1吗?你在这里添加一个字符串和一个整数。

标签: activerecord yii criteria


【解决方案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'),
    );

【讨论】:

  • thanks 效果很好,但你有一点错误条件不是数组。
  • 对不起,你是对的。我从 wiki 页面复制了格式,但它不正确!那会教我:) 我很高兴你明白了。您还可以在特定模型上使用 saveCounters()。这就是我通常所做的。
【解决方案2】:

从 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多