2015-12-18 43 views
5

基本上我想使用條件將數據保存在我的模型中,以防止同時執行多個保存數據。如何在laravel中保存使用條件?

我目前現在要做的是:

$order = Order::find(id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->save(); 

我需要的是:

$order = Order::find(id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->where('last_update', $last_update); 
$order->save(); 

是否可以有效地做到這一點在laravel或者我必須使用原始SQL或更新?

+0

你可以簡單地使用,如果條件'如果($命令 - >在哪裏( 'LAST_UPDATE',$ LAST_UPDATE))'然後保存 –

+0

會不會仍然能夠導致不一致的數據,因爲檢索和保存數據庫中的數據不在一個SQL更新語法中? – Nameless

+0

一旦你調用'save',將會插入/更新所有語句。 –

回答

1

我猜你的意思

無論如何,我認爲你需要查詢生成器做你想要什麼:

DB::table('order') 
    ->where('id', $id) 
    ->update([ 
     'paid_amount' => $amount, 
     'status' => $status; 
     ]); 

這是因爲原子,你可以得到。

1

我覺得這是做到這一點的最佳方式:「是否有可能在雄辯有效地做到這一點還是我必須用原始SQL或更新」

$order = Order::where('last_update', $last_update)->find($id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->save(); 
3

的@Amarnasan答案的簡化版本:

Order::findOrFail($id)->update([ 
    'paid_amount' => $amount, 
    'status' => $status; 
]);