0

How can i update multiple rows use laravel eloquent?

I want something like:

$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')]);

I have tried

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

and i worked!
So i think my problem is in DB::raw

Thank you so much!

hayumi kuran
  • 391
  • 9
  • 21

2 Answers2

2

use decrement();

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

use whereIn for multiple Ids:

guest = GuestJointDetail::whereIn('guest_joint_id', $guest_id_array)
        ->where('sort_no', '>', $sort_no)
        ->whereNull('deleted_at')
        ->decrement('sort_no',1);
Dhruv Raval
  • 1,535
  • 1
  • 8
  • 15
1

You can use decrement():

$guest = GuestJointDetail::where('guest_joint_id', $guest_joint_id)
    ->where('sort_no', '>', $sort_no)
    ->whereNull('deleted_at')
    ->decrement('sort_no');
Jonas Staudenmeir
  • 24,815
  • 6
  • 63
  • 109