Laravel原始查询last_insert_id

5

在使用Laravel的原始查询时,是否有一种方法可以获取last_insert_id

DB::query('INSERT into table VALUES ('stuff') ')

这将返回true或false。在Laravel中使用原始查询方式,有没有一种方法可以获取last_insert_id?

5个回答

18

为了让那些可能有同样问题的Laravel 4用户受益,与@haso-keric的回答相比,语法略有变化。

现在是这样写:

$id = DB::table('users')->insertGetId(array('email' => 'example@gmail.com')


在撰写本文时,这也适用于 Lumen :) (因此我认为 Laravel 5.4 也是如此)。 - CodeMonkey
1
我想知道为什么这个回答会得到这么多赞,因为问题明确要求原始查询。尽管我同意真的不应该使用原始查询来解决这个问题。 - eis

7
尝试使用DB::Query('SELECT LAST_INSERT_ID()')吗?(这是针对DB产品的特定示例,我所提供的示例适用于MySQL/MariaDB。)

3

对于Laravel 4:

$id = DB::select('SELECT LAST_INSERT_ID()');

解释:

当使用优美的PHP框架Laravel 4制作网站等时,您应该使用“DB :: Select”函数而不是“DB :: Query”进行原始查询。因为“DB :: Query”会抛出错误。我相信这是因为它已经从v3中弃用或者根本不存在了。你的,史密斯。


当使用可爱的 Laravel 4 PHP 框架用于网站等方面时,请使用“DB::Select”函数而不是“DB::Query”进行原始查询。因为“DB::Query”会抛出错误。祝好,史密斯。 - Edmunds22

2

如何插入一条具有自增ID的记录?您可以使用insert_get_id方法来插入一条记录并检索ID:

$id = DB::table('users')->insert_get_id(array('email' => 'example@gmail.com')); 注意:insert_get_id方法期望自增列的名称为"id"。


0

只需使用底层的PDO实例:

DB::connection()->getPdo()->lastInsertId();

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