Laravelで行ロックとテーブルロックする方法メモ。便利なlockForUpdateメソッドでサクッとロックできます。
行ロック
テーブルロック
ロックはコミットするまで持続します。
lockForUpdateメソッド
lockForUpdateメソッドで占有ロックをかけることができます。
select for updateのようなレコード更新や削除する際に、別のロックがかかるのを防ぐことができます。
また、共有ロックをかける場合はsharedLockメソッドをクエリに指定します。
withTrashedメソッド
ソフトデリートされたモデルであっても、withTrashedメソッドを使うことで一時的に除外されます。ソフトでリートを使用していない場合は不要です。
つまり、既に削除されたレコードでもwithTrashedメソッドを使うことで、対象のレコードを取得することが可能です。