laravelドキュメント: データベーストランザクション から。
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のオブジェクトを文字列に変換できませんでした
私は何か間違ったことをしましたか?お知らせ下さい。ありがとう...
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();
});
@CaptainHypertextの質問に答えるには
クロージャーの内側の$ idを変更すると、外側の$ idに影響しますか?
この方法は私にとってうまくいきました:
$id = 3;
$transactionResult = DB::transaction(function($id) use ($id) {
$request_id = DB::table('requests')->insertGetId([
'company_id' => $company->$id,
]);
return $request_id ;
});
echo($transactionResult);