我正在同时插入多行,比如2行
$multiple_rows = [
['email' => 'taylor@example.com', 'votes' => 0],
['email' => 'dayle@example.com', 'votes' => 0]
];
DB::table('users')->insert($multiple_rows);
如何获取插入的ID。
我现在就是这样做的。
foreach($multiple_rows as $row){
DB::table('users')->insert($row);
$record_ids[] = DB::getPdo()->lastInsertId();
}
任何其他好的方法,每次都不插入单行。
答案 0 :(得分:7)
您可以执行以下操作:
$latestUser = DB::table('users')->select('id')->orderBy('id', 'DESC')->first();
$multiple_rows = [
['email' => 'taylor@example.com', 'votes' => 0],
['email' => 'dayle@example.com', 'votes' => 0]
];
DB::table('users')->insert($multiple_rows);
$users = DB::table('users')->select('id')->where('id', '>', $latestUser->id)->get();
答案 1 :(得分:5)
如果你真的需要所有插入的ID
$dataArray = [
['name' => 'ABC'],
['name' => 'DEF']
];
$ids = [];
foreach($dataArray as $data)
{
$ids[] = DB::table('posts')->insertGetId($data);
}
为了获得大量插入的所有id,我认为好的方法是首先获取表中的最后一个id,进行大量插入并获得最后一个id。理论上他们必须遵循,除非从另一个连接插入。为避免解决方案是 transaction 。
<强>更新强>
另请阅读documentation