首页 > 解决方案 > Laravel:在一个查询中更新多行

问题描述

如何使用 laravel eloquent 更新多行?

我想要类似的东西:

$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

太感谢了!

标签: laraveleloquent

解决方案


使用减量();

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

对多个 ID 使用 whereIn:

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

推荐阅读