2013-06-13 6 views
20

laravelのドキュメントから:Database Transaction。 それは言う:Laravel DB :: transaction()にパラメータを渡す方法

ここ
DB::transaction(function() { 
    DB::table('users')->update(array('votes' => 1)); 
    DB::table('posts')->delete(); 
}); 

、1が明示的にユーザーを更新するために、入力された... 私はそれがエラーをスローし、変数を使用して

$id = 3; 
DB::transaction(function() { 
    DB::table('users')->where('id','=',$id)->get(); 
}); 

これを試してみました:

Undefined variable: id 

このように$ idにパラメータとして配置しようとしました:

$id = 3; 
DB::transaction(function($id) { 
    DB::table('users')->where('id', '=', $id)->get(); 
}); 

はそれでも、エラー:

Object of class Illuminate\Database\MySqlConnection could not be converted to string

は、私は何も悪いことをしたのでしょうか。お知らせ下さい。

$id = 3; 
$transactionResult = DB::transaction(function($id) use ($id) { 
$request_id = DB::table('requests')->insertGetId([ 
          'company_id' => $company->$id, 
         ]); 
return $request_id ; 
}); 

echo($transactionResult); 

答えて

46

useキーワードは何が必要ですPHP 7の構文が変更されました:

$id = 3; 
DB::transaction(function() use ($id) { 
    DB::table('users')->where('id', '=', $id)->get(); 
}); 
+7

[匿名関数:クロージャとスコープ](http://www.php.net/manual/en/functions.anonymous.php) –

+0

クロージャ内で$ idを変更すると、外に$ id? –

+2

@CaptainHypertext外側の$ idを変更したいのであれば、次のように参照することができます: 'DB :: transaction(function($ id)use(&$ id){' –

1

このメソッドは、私のために働いた

If you alter $id inside the closure, will it affect the $id outside?

の@CaptainHypertext質問に答えるために:ありがとう...

0

で:

$id = 3; 
DB::transaction(function($id) use ($id) { 
    DB::table('users')->where('id', '=', $id)->get(); 
}); 
関連する問題