如何使用Eloquent :: insert()获取最后一个插入的id

时间:2016-04-22 10:55:23

标签: php laravel laravel-5 laravel-5.1

我在laravel 5中插入大量插入,如下所示:

$data = array(
    array('name'=>'Jack', 'age'=>'24'),
    array('name'=>'Tom', 'age'=>'37'),
    //...
);

Users::insert($data);

知道如何获取最后插入的ID?

2 个答案:

答案 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']);