我嘗試這樣做:Laravel 4,打開DB ::選擇到雄辯對象
$result = (array)DB::selectOne('SELECT * FROM campaign WHERE id = ? FOR UPDATE', [$data['campaign_id']]);
$campaign = new Campaign($result);
$campaign->counter += 1;
$campaign->save();
但我得到保存Integrity constraint violation: 1062 Duplicate entry '1' for key
這個錯誤,因爲它認爲我試圖用新廣告活動,而不是一個工作現有的。
編輯:爲什麼不知道它存在,考慮到我有主鍵集。
你爲什麼不使用雄辯或流利? –
我認爲我所做的事情太過先進,無法言傳。我需要鎖定表格行。你可以看到我在查詢中使用了'FOR UPDATE'。我無法弄清楚如何做到這一點,或任何有口才的習慣。 –
明確定義事務(如[show here](http://stackoverflow.com/questions/15105640/laravel-eloquent-orm-transactions))有幫助嗎? – fideloper