Laravel: обновить несколько строк в одном запросе - PullRequest
0 голосов
/ 29 августа 2018

Как мне обновить несколько строк, используя 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

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

использовать декремент ();

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

используйте whereIn для нескольких идентификаторов:

guest = GuestJointDetail::whereIn('guest_joint_id', $guest_id_array)
        ->where('sort_no', '>', $sort_no)
        ->whereNull('deleted_at')
        ->decrement('sort_no',1);
0 голосов
/ 29 августа 2018

Вы можете использовать decrement():

$guest = GuestJointDetail::where('guest_joint_id', $guest_joint_id)
    ->where('sort_no', '>', $sort_no)
    ->whereNull('deleted_at')
    ->decrement('sort_no');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...