我是laravel的新手,正在尝试从以下查询中获取最后插入的ID:
DB::select("INSERT INTO current_survey (`name`, `created_by`, `description`) SELECT `name`, `created_by`, `description` FROM survey WHERE id=survey_id");
这个查询很好用,有人可以建议我如何在 Laravel 中实现吗?
谢谢。
我是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();
根据 Laravel 文档:
如果表有自增 ID,请使用 insertGetId
方法插入记录并获取 ID:
https://laravel.com/docs/5.8/queries#inserts
$id = DB::table('users')->insertGetId(
['email' => 'john@example.com', 'votes' => 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
试试这个:
$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