3分钟短文 | Laravel模型获取最后一条插入记录的ID编号

2020-08-03 20:30:46 浏览数 (1)

学习时间

为了模拟实际编程情况,我们使用以下代码。比如有一个CRM系统,需要用户输入上报公司信息之后,通过API接口返回提示信息。

代码比较简单,知识将 request 的 input 内容复制给 Company 模型的属性,然后调用 save 方法将数据存入。

那么,如果想要获取存入后数据条目的ID,如何返回呢?

其实,save 方法本身就是链式调用的,会返回当前的 Company 模型对象。直接调用属性值即可:

代码语言:javascript复制
$data->id;

封装到 Response 响应体内:

代码语言:javascript复制
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);

上面的写法自然是对的,返回的是当前写入的条目的ID。但是,如果是并发的系统,或者在流程处理中,没有使用 Company 模型进行数据操作,而是 DB::statement,DB::insert 这些,获取到的,可就不是最后的ID了。

兼容的写法,需要考虑多用户并发操作,以及数据更新源不同的情况。那么需要使用独立的方式:

代码语言:javascript复制
DB::getPdo()->lastInsertId();

这样就可以了,基本上不会出错。

0 人点赞