2016-08-11 15 views
3

私は、ユーザーを作成するトランザクションを実行しており、新しいユーザーIDで追加の作業を行うためにイベントを起動します。設定テーブルの外部キーuser_idは、新しく作成されたuser_idですトランザクションはもちろん動作します)。Laravel 5 - トランザクションで新しく挿入されたIDを取得しますか?

DB::beginTransaction(); 

try { 
    DB::table('users')->insert([ 
       'email' => $email, 
       'password' => $password 
    ]); 

    event(new UserWasStored($newUserId)); // How do I get the $newUserId? 
} 
catch(\Exception $e) { 
    DB::rollback(); 
} 

DB::commit(); 

がどのように私はトランザクション内のイベントに渡された$newUserIdを取得することができます:ここで

は、私がこれまで持っているものでしょうか?

答えて

6

documentationによると、あなたはまた、新しいユーザーを作成するためにあなたのUserモデルを使用することができますinsertGetId方法

$newUserId= DB::table('users')->insertGetId([ 
    'email' => $email, 
    'password' => $password 
]); 
0
$id = DB::table('table')->insert($data)->lastInsertId(); 
+0

バックでそれをラップし、単一の行にコードをフォーマットするには、ステファンちょっとは ' – Wonka

1

を使用する必要があります。その代わりに、それはあなたに作業するユーザオブジェクトを与えます。これは*コミットされていないトランザクション内で作業をしない* Laravel 5.5のとおり

$user = User::create([ 
    'email'  => '[email protected]', 
    'password' => bcrypt('your-password') 
]); 

dd($user->id); 
+0

を刻みます。 idフィールドは常に 'null'です。 – user1643723

関連する問題