使用数据库字段值在cakephp中使用savefield添加值

时间:2011-08-26 08:54:45

标签: sql cakephp

我的问题非常简单,但很难找到搜索引擎的答案。

我只想更新数据库中的字段,使用旧字段值添加另一个值。我现在正在使用以下内容:

$this->Advertisement->saveField('total_views', '(total_views + 1)', false);

但是这给了我下一个查询:

UPDATE `advertisement` SET `total_views` = '(total_views +1)', `modified` = '2011-08-26 10:44:58' WHERE `advertisement`.`id` = 16

这是错误的,应该是:

UPDATE `advertisement` SET `total_views` = (total_views +1), `modified` = '2011-08-26 10:44:58' WHERE `advertisement`.`id` = 16

问题在于它将(total_views +1)放在引号之间。

有没有人知道如何让这个工作?

4 个答案:

答案 0 :(得分:5)

$this->Advertisement->updateAll(
array('Advertisement.total_views' => 'Advertisement.total_views + 1'),
array('Advertisement.id' => 1)
);

答案 1 :(得分:2)

以防万一其他人对此感到困惑,查询中的空格很重要。

有效Advertisement.total_views + 1

不起作用Advertisement.total_views+1

答案 2 :(得分:1)

$this->Advertisement->updateAll(array('Advertisement.total_views'=>'Advertisement.total_views+1'), array('Advertisement.id'=>$id));

答案 3 :(得分:0)

我发现,对于类似的问题,我能够通过以下方式解决它,

$this->Advertisement->updateAll(
array('Advertisement.total_views = Advertisement.total_views + 1'),
array('Advertisement.id' => 1)
);