我在laravel 5中插入大量插入,如下所示:
$data = array(
array('name'=>'Jack', 'age'=>'24'),
array('name'=>'Tom', 'age'=>'37'),
//...
);
Users::insert($data);
知道如何获取最后插入的ID?
答案 0 :(得分:0)
因此,批量插入数据时,您无法使用insertGetId()
。因此,如果您想保持数据库完整性,您可以执行以下操作:
$lastRow = array_pop($data); // Cutting off last item from an array
Users::insert($data);
$lastId = Users::insertGetId($lastRow);
我知道这是一个非常愚蠢的解决方案,它会创建2个查询而不是一个,但如果你找不到更好的东西,你可以使用它。
<强>替代强>
你也可以试试这个:
$lastId = DB::select('select last_insert_id()');
这可行,it shouldn't brake DB integrity:
对于LAST_INSERT_ID(),维护最近生成的ID 服务器基于每个连接。它不会被另一个人改变 客户。如果您更新另一个AUTO_INCREMENT,它甚至不会更改 具有非魔法值的列(即,非NULL和值的值) 不是0)。
答案 1 :(得分:-1)
你可以双向
使用Eloquent模型
$user = new Reports();
$user->email= 'johndoe@example.com';
$user->save();
$lastInsertId = $user->id;
或强>
使用查询生成器
$lastInsertId = DB::table('reports')->insertGetId(['email' => 'johndoe@example.com']);