hayumi kuran
hayumi kuran

Reputation: 431

Laravel: Update multiple rows in one query

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!

Upvotes: 0

Views: 1147

Answers (2)

Dhruv Raval
Dhruv Raval

Reputation: 1583

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);

Upvotes: 2

Jonas Staudenmeir
Jonas Staudenmeir

Reputation: 25936

You can use decrement():

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

Upvotes: 1

Related Questions