Laravel:从查询构建器中获取最后插入的ID

8

我是laravel的新手,正在尝试从以下查询中获取最后插入的ID:

DB::select("INSERT INTO current_survey (`name`, `created_by`, `description`)  SELECT `name`, `created_by`, `description` FROM survey WHERE id=survey_id");

这个查询很好用,有人可以建议我如何在 Laravel 中实现吗?

谢谢。


$id = DB::getPdo()->lastInsertId(); - kunal
1
嘿,谢谢,它起作用了。发表你的答案,我会接受它。 - Paljinder Dhillon
4个回答

12

试一次:

$id = DB::getPdo()->lastInsertId();

10

根据 Laravel 文档:

如果表有自增 ID,请使用 insertGetId 方法插入记录并获取 ID:

https://laravel.com/docs/5.8/queries#inserts

$id = DB::table('users')->insertGetId(
    ['email' => 'john@example.com', 'votes' => 0]
);

这将有助于避免多余的换行。 - Vagabond

0
如果您的主字段列名为id,那么只需使用:
$lastInsertId = DB::table('tablename')->insertGetId($data);

在使用PostgreSQL时,insertGetId方法期望自增列的名称为id。如果您想从不同的"序列"(例如product_id)中检索ID,则可以将列名作为第二个参数传递给insertGetId方法。

$lastInsertId = DB::table('tablename')->insertGetId($data, 'product_id');

Laravel文档:insertGetId


0

试试这个:

$query = DB::statement("INSERT INTO current_survey (`name`, `created_by`, `description`)  SELECT `name`, `created_by`, `description` FROM survey WHERE id=survey_id");

//your inserted id
$last_id = $query->id;

我尝试使用 $query->id,但出现了以下错误:尝试获取非对象的属性'id',并且使用 insert() 方法 :/ - Pathros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接