Laravel:在一个查询中更新多行

时间:2018-08-29 03:31:37

标签: laravel eloquent

如何使用laravel雄辩地更新多行?

我想要类似的东西

$guest = GuestJointDetail::where('guest_joint_id', $guest_joint_id)
    ->where('sort_no', '>', $sort_no)
    ->whereNull('deleted_at');

$guest->update(['sort_no' => DB::raw('sort_no - 1')]);

我尝试过

$guest->update(['sort_no' => 10]);

我工作了!
所以我认为我的问题出在 DB :: raw

非常感谢您!

2 个答案:

答案 0 :(得分:2)

使用decrement();

guest = GuestJointDetail::where('guest_joint_id', $guest_joint_id)
    ->where('sort_no', '>', $sort_no)
    ->whereNull('deleted_at')
    ->decrement('sort_no',1);

将whereIn用于多个ID:

guest = GuestJointDetail::whereIn('guest_joint_id', $guest_id_array)
        ->where('sort_no', '>', $sort_no)
        ->whereNull('deleted_at')
        ->decrement('sort_no',1);

答案 1 :(得分:1)

您可以使用decrement()

$guest = GuestJointDetail::where('guest_joint_id', $guest_joint_id)
    ->where('sort_no', '>', $sort_no)
    ->whereNull('deleted_at')
    ->decrement('sort_no');