学习时间
为了模拟实际编程情况,我们使用以下代码。比如有一个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();
这样就可以了,基本上不会出错。