2016-08-11 56 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你應該使用insertGetId方法

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

嘿斯特凡,格式化在一行的代碼,用反勾' – Wonka

1

你也可以用你的User模型來創建一個新的用戶。作爲回報,它會給你用戶對象來處理。

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

dd($user->id); 
+0

由於Laravel 5.5的包裝它這個*不*未提交的事務中的工作。 id字段始終爲'null'。 – user1643723