基本上我想使用条件在我的模型中保存数据,以防止同时执行多个保存数据。
我现在所做的是:
$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 :(得分:3)
@Amarnasan答案的简化版本:
Order::findOrFail($id)->update([
'paid_amount' => $amount,
'status' => $status;
]);
答案 1 :(得分:1)
我认为这是最好的方法:
$order = Order::where('last_update', $last_update)->find($id);
$order->paid_amount = $amount;
$order->status = $status;
$order->save();
答案 2 :(得分:1)
我猜您的意思是“是否可以在雄辩中有效地执行此操作,还是必须使用原始sql或更新?”
无论如何,我认为您需要查询构建器来执行您想要的操作:
DB::table('order')
->where('id', $id)
->update([
'paid_amount' => $amount,
'status' => $status;
]);
这是你能得到的原子。