Правильно используйте lockForUpdate в syncWithoutDetaching в Laravel - PullRequest
0 голосов
/ 20 января 2020

Я знаю, как использовать lockForUpdate, если я просто выбираю модель, а затем обновляю ее. Это работает нормально, и я делаю это так:

 DB::beginTransaction();
 $myModelObject = MyModel::lockForUpdate()->find($id);
 $myModelObject->any_attribute = 'some Text';
 $myModelObject->save();
 DB::commit();

Но как мне добиться блокировки для обновления, если я хочу обновить сводную таблицу следующим образом:

$user->roles()->syncWithoutDetaching([$roleId => [
                'attribute_1' => $test1,
                'attribute_2' => $test2
            ]]);

Это не ясно мне, где разместить «beginTransaction» и «commit», и где я должен использовать метод «lockForUpdate» здесь. Спасибо за любую помощь!

...