当前位置: 首页 > 知识库问答 >
问题:

如何获取最后插入的ID使用雄辩::插入()

董光霁
2023-03-14

我插入批量插入laravel 5像这样:

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

Users::insert($data);

知道如何获取最后一个插入的id吗?

共有2个答案

拓拔曦
2023-03-14

你可以双向选择

使用雄辩模型

$user = new Reports();        
$user->email= 'johndoe@example.com';  
$user->save();
$lastInsertId = $user->id;

或者

使用查询生成器

 $lastInsertId = DB::table('reports')->insertGetId(['email' => 'johndoe@example.com']);
严嘉良
2023-03-14

因此,在批量插入数据时,不能使用插入GetId()。所以如果你想保持数据库的完整性,你可以这样做:

$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()');

这可能会起作用,但不应影响DB的完整性:

对于LAST_INSERT_ID(),最近生成的ID在服务器中按每个连接进行维护。它不会被其他客户端更改。如果使用非magic值(即非NULL且非0的值)更新另一个AUTO_INCREMENT列,则该值甚至不会更改。

 类似资料:
  • 我正在执行数据库操作与"雄辩ORM在Laravel"。我只想取数据库中最后一个插入id(不是最大id)。 我在laravel Eloquent ORM中搜索到最后一个插入标识,我得到了以下链接(Laravel,使用Eloquent获取最后一个插入标识),即从以下函数获取最后一个插入标识

  • 问题内容: 我想在Hibernate中获取最后插入的值的ID。 搜索后: 但是以下代码给了我这个错误: java.lang.ClassCastException:无法将java.math.BigInteger强制转换为java.lang.Long 请分享您的想法! 解 不要忘记导入: 导入java.math.BigInteger; 问题答案: 错误很明显。它回来了而不是 您必须将其分配给。从中得到

  • 问题内容: 我正在将PHP PDO与PostgreSQL一起用于新项目。 给定以下功能,如何返回刚刚插入的行的ID?它不像现在那样工作。 问题答案: 从手册: 根据基础驱动程序,返回最后插入的行的ID或序列对象的最后一个值。例如,PDO_PGSQL()要求您为name参数指定序列对象的名称。 应该是这样的: [编辑]更新文档链接

  • 问题内容: 我正在使用PHP中的mvc结构,我想检索最后插入的行ID。 我创建了以下sql代码: 但不幸的是我遇到了这个错误: 我也尝试过此堆栈链接,但不适用于我,因此如果您能帮助我获取ID,我将非常高兴。 我也在这里共享我的controller.php文件。 问题答案: 你快到了。 如果您查看lastInsertId的手册页,则会在数据库句柄上调用它- 您当前正在语句中对其进行调用。 您只需要致

  • 问题内容: 我有一个查询,我想插入最后一个ID。字段ID是主键,并且是自动递增的。 我知道我必须使用以下语句: 该语句适用于如下查询: 但是,如果我想使用以下语句获取ID: 我收到此错误: 我究竟做错了什么? 问题答案: 那是因为那是SQL函数,而不是PHP。您可以使用。 喜欢: 如果要使用SQL而不是PDO API进行操作,则可以像普通的select查询一样进行操作:

  • 问题内容: 我目前正在使用以下代码在表中插入数据: 我想返回插入的最后一个ID,但我不知道如何获取它。 亲切的问候! 问题答案: 后 保存 ,应该是最后的ID插入。 可以这样使用。 对于更新的laravel版本,请尝试此