2013-08-02 106 views
1

我试图每当调用函数时增加一个字段的值。但问题是,它增加了3而不是1,虽然我已经加了+1。下面是我的代码。如何在cakephp中将字段的值增加1?

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

这对我的代码工作正常 –

+1

确保查询只运行一次。检查你的SQL转储。 – cartina

+0

@cartina:我检查过,这个查询只运行一次。是否有可能递归可以在事情中扮演任何角色? – Ketan

回答

4
$this->loadModel('Listing'); 
$this->Listing->id = $listing_id; 
$this->Listing->updateAll(array(
     'Listing.total_views' => 'Listing.total_views + 1'), 
      array('Listing.id' => $listing_id)); 
+0

这不适用于我。它只是将值更改为0。 –

-1

使用此代码更新。它是更好地获取从数据库共TOTAL_VIEWS,然后增加它和更新数据库

$this->loadModel('Listing'); 
$this->Listing->id = $listing_id; 
$count=$this->Listing->field('total_views'); 
$count=$count+1; 
$this->Listing->saveField('Listing.total_views',$count); 

如果问题仍然存在,那么你的代码必须运行多次。

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-field

http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-savefield-string-fieldname-string-fieldvalue-validate-false

+0

对不起,但这不是一个更好的方法。如果其他人查看并在原始请求仍在运行时运行此代码,会发生什么情况?您的方法不是原子的 – RichardAtHome