mcpField
L
laravel:transactions-and-consistency

laravel:transactions-and-consistency

github.com/jpcaparas開発157165 回インストール17 週間前に更新
リポジトリ

laravel:transactions-and-consistency について

Laravelで複数段階のデータベース変更を原子的に実行し、リトライを安全に扱うためのスキルです。トランザクション境界、コミット後の処理、冪等なジョブ、行ロックを扱います。

主な機能

  1. 01関連する書き込みをトランザクション化
  2. 02コミット後にイベントやジョブを実行
  3. 03冪等なジョブの設計
  4. 04行ロックによる書き込み調整
  5. 05トランザクション前の不変条件検証

活用シーン

  1. 01レコードと関連項目の一括更新
  2. 02コミット成功後にのみジョブをキュー投入
  3. 03ジョブのリトライによる重複処理の防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --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() を使用します
  • トランザクションを開始する前に、境界で不変条件を検証します
  • Laravel 13 以降:upsert() は uniqueBy が空の場合に InvalidArgumentException をスローします。必ず実際の一意列を渡してください

コメント