2013-08-02 56 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