Laravel5 トランザクションで引数を渡す方法

Laravel5でトランザクションを行う場合は以下のように実装します。

DB::transaction(function()
{
  //一連の登録処理を実装
});

トランザクションの外で定義した変数を、トランザクションの中で参照したい場合、以下のようにしてもうまくいきません。

$name = 'sample'; //トランザクションの外で定義した変数

DB::transaction(function()
{
  $user = New User;
  $user->name = $name; //参照できないためエラー
});

useを使用すればトランザクションの中でも参照することができます。

$name = 'sample'; //トランザクションの外で定義した変数
DB::transaction(function() use ($name)
{
  $user = New User;
  $user->name = $name; //OK
});

これでリクエストの情報($request)を渡して登録・更新処理も行うことができます。


関連記事