2

関数が呼び出されるたびに、フィールドの値を 1 ずつインクリメントしようとしていますが、+1 を追加したにもかかわらず、1 ではなく 3 ずつインクリメントされるという問題があります。以下は私のコードです。

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

2 に答える 2

5
$this->loadModel('Listing');
$this->Listing->id = $listing_id;
$this->Listing->updateAll(array(
        'Listing.total_views' => 'Listing.total_views + 1'),
            array('Listing.id' => $listing_id));
于 2013-09-24T13:31:39.723 に答える
-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/retriving-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

于 2013-08-02T09:22:13.837 に答える