37

laravel のドキュメントから: Database 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();
});

それでも、エラー:

クラス Illuminate\Database\MySqlConnection のオブジェクトを文字列に変換できませんでした

私は何か悪いことをしましたか?お知らせ下さい。ありがとう...

4

3 に答える 3

78

useキーワードはあなたが必要とするものです:

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

PHP 7 の場合 (未テスト、以下の回答で要求されたとおりに編集):

$id = 3;
DB::transaction(function() use ($id) {
    DB::table('users')->where('id', '=', $id)->get();
});
于 2013-06-13T10:56:39.877 に答える