Laravelで行ロックとテーブルロックする方法【lockForUpdate】

Laravelで行ロックとテーブルロックする方法メモ。便利なlockForUpdateメソッドでサクッとロックできます。

行ロック

テーブルロック

ロックはコミットするまで持続します。

 

lockForUpdateメソッド

lockForUpdateメソッドで占有ロックをかけることができます。

select for updateのようなレコード更新や削除する際に、別のロックがかかるのを防ぐことができます。

また、共有ロックをかける場合はsharedLockメソッドをクエリに指定します。

参考:Laravel 5.3 データベース:クエリビルダ

 

withTrashedメソッド

ソフトデリートされたモデルであっても、withTrashedメソッドを使うことで一時的に除外されます。ソフトでリートを使用していない場合は不要です。

つまり、既に削除されたレコードでもwithTrashedメソッドを使うことで、対象のレコードを取得することが可能です。

参考:Laravel 5.5 バリデーション