Laravel 5 - 在交易中获取新插入的ID?

时间:2016-08-11 19:53:56

标签: laravel laravel-5

所以我正在运行一个应创建用户的事务,并触发事件以使用新用户ID执行其他操作,包括创建一个设置表,其中设置表中的外键user_id是新创建的user_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传递给事件?

3 个答案:

答案 0 :(得分:6)

根据documentation,您应该使用insertGetId方法

$newUserId= DB::table('users')->insertGetId([
    'email' => $email,
    'password' => $password
]);

答案 1 :(得分:1)

您还可以使用User模型创建新用户。作为回报,它将为您提供要使用的用户对象。

$user = User::create([
    'email'     => 'john@example.com',
    'password'  => bcrypt('your-password')
]);

dd($user->id);

答案 2 :(得分:0)

$id = DB::table('table')->insert( $data )->lastInsertId();