laravel-transactions-and-consistency について
Laravel で複数手順のデータベース書き込みの整合性を保つスキルです。トランザクション、コミット後のイベントやジョブ、冪等な再試行、行ロックを扱います。
主な機能
- 01関連する書き込みをトランザクションで囲む
- 02コミット後にイベントやジョブを実行
- 03ジョブを安全に再試行可能にする
- 04行ロックで書き込みを調整
- 05トランザクション前に不変条件を検証
活用シーン
- 01注文と商品を原子的に更新
- 02コミット後に請求書ジョブを実行
- 03ジョブ再試行時の副作用の重複を防止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ noartem/ skills --skill laravel-transactions-and-consistencyインストール後、Claude Code で/laravel-transactions-and-consistencyを入力して読み込まれたか確認します。
詳細
トランザクションと一貫性
複数ステップの変更をアトミックにし、再試行を安全に行えるようにします。
コマンド
DB::transaction(function () use ($order, $payload) {
$order->update([...]);
$order->items()->createMany($payload['items']);
OrderUpdated::dispatch($order); // or flag for after-commit
});
// Listener queued after commit
class SendInvoice implements ShouldQueue {
public $afterCommit = true;
}
パターン
- 書き込み処理と関連する副作用をまとめるには、
DB::transactionを使用します - イベントやジョブには、
$afterCommitまたはdispatchAfterCommit()を優先します - ジョブを冪等にします(既存の状態を確認し、一意制約を使用します)
- 必要に応じて、行レベルの調整に
lockForUpdate()を使用します - トランザクションを開始する前に、境界で不変条件を検証します
コメント
Markdown 対応