首页 > 解决方案 > 如何使用 Laravel DB::table()->insert() 获取最后插入的行?

问题描述

我使用此代码插入数据。

$conv = DB::table('conversations')
->insert([
'is_seen' => $other_user_id,
'user_one' => $user_id,
 'user_two' => $other_user_id,
'user_one_status' => 1,
'user_two_status' => 0,
'message_status' => 0,
'last_message' => $messageCon
]);

它返回真假值。我需要最后插入的行。

标签: laravel

解决方案


假设你没有使用 Eloquent 是有原因的,你可以使用 insertGetId。

$conv = DB::table('conversations')
->insertGetId([
'is_seen' => $other_user_id,
'user_one' => $user_id,
 'user_two' => $other_user_id,
'user_one_status' => 1,
'user_two_status' => 0,
'message_status' => 0,
'last_message' => $messageCon
]);

文档中的警告:

  • 自动递增 ID 如果表具有自动递增 id,请使用 insertGetId 方法插入记录,然后检索 ID:

  • 当使用 PostgreSQL 时,insertGetId 方法期望自动递增的列被命名为 id。如果您想从不同的“序列”中检索 ID,您可以将列名作为第二个参数传递给 insertGetId 方法。


推荐阅读