如何在 laravel 中获取最后插入的 ID
How to get last inserted ids in laravel
我同时插入多行,比如说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();
}
无需每次都插入一行的任何其他好方法。
如果你真的需要所有插入的ID
$dataArray = [
['name' => 'ABC'],
['name' => 'DEF']
];
$ids = [];
foreach($dataArray as $data)
{
$ids[] = DB::table('posts')->insertGetId($data);
}
要通过大量插入获取所有 id 我认为好的方法是首先获取 table 中的最后一个 id,进行大量插入并获取最后一个 id。理论上它们必须跟随,除非有来自另一个连接的插入。为避免解决方案是 transaction.
更新
同时阅读 documentation
您可以执行以下操作:
$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();
我同时插入多行,比如说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();
}
无需每次都插入一行的任何其他好方法。
如果你真的需要所有插入的ID
$dataArray = [
['name' => 'ABC'],
['name' => 'DEF']
];
$ids = [];
foreach($dataArray as $data)
{
$ids[] = DB::table('posts')->insertGetId($data);
}
要通过大量插入获取所有 id 我认为好的方法是首先获取 table 中的最后一个 id,进行大量插入并获取最后一个 id。理论上它们必须跟随,除非有来自另一个连接的插入。为避免解决方案是 transaction.
更新
同时阅读 documentation
您可以执行以下操作:
$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();