1

私は CakePHP の更新でこの問題を抱えています。その関数を使用して DB の行を更新しようとしました (以下を参照)。

function updateRow($amount, $user_id){

    $user_balance = $this->getUserBalance($user_id);

    //now update
    $balance['Balance']['id'] = $user_balance['Balance'][id];
    $balance['Balance']['amount'] = $user_balance['Balance'][amount] + $amount;

    $this->Balance->save($balance);
}

ONE time と呼ぶと、次のようになります。

$this->updateRow(100,5);

大丈夫です。しかし、次のように2回以上呼び出そうとすると:

$this->updateRow(100,5); 
$this->updateRow(200,5);
$this->updateRow(150,5);

関数が呼び出されましたが、最後の更新のみが実際に db で行われました!! (たとえば、最初の金額の値は 100 でした。3 回の呼び出しの最後に、金額の値は 550 であると予想していましたが、250 です!)

これに対する解決策はありますか?thx事前に

4

1 に答える 1

0

CakePHP: add/substract with save()?の回答を参照してください。参考のため。

ここでは、アトミック メソッド updateAll() を使用する必要があります。

于 2013-02-25T12:49:49.593 に答える