2012-11-08 114 views
2

有没有办法在使用laravel的原始查询时获得last_insert_idlaravel原始查询last_insert_id

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

这将返回true或false。有没有办法在Laravel中使用原始查询来获取last_insert_id?

回答

7

尝试DB::Query('SELECT LAST_INSERT_ID()')

(这是DB产品具体,比如我已经给了它是MySQL/MariaDB的。)

+0

它不PGSQL – Volatil3

+0

@ Volatil3正确工作。这是针对MySQL的,不适用于其他人。 – eis

2

插入有自动递增的ID的记录?您可以使用insert_get_id方法插入记录并检索ID:

$ id = DB :: table('users') - > insert_get_id(array('email'=>'[email protected]') ); 注意:insert_get_id方法期望自动递增列的名称为“id”。

15

只有那些可能对laravel 4有同样问题的人的好处是,从@ haso-keric的回答中有轻微的语法变化。

是:

$id = DB::table('users')->insertGetId(array('email' => '[email protected]')

+0

在写作的时候,这也适用于流明:)(所以我也假设Laravel 5.4也是如此) – CodeMonkey

3

对于Laravel 4:

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

说明:

when using the lovely Laravel 4 PHP framework for websites etc, you should refer to the "DB::Select" function instead of "DB::Query" for raw queries. As "DB::Query" throws an error. I believe this is because its deprecated from v3, or plain doesn't exist. Yours, Smith.

+0

请在回答问题时添加一些解释。 – Lal

+0

当使用可爱的Laravel 4 PHP框架的网站等,你应该参考到原始查询的“DB :: Select”函数而不是“DB :: Query”。由于“DB :: Query”会引发错误。你的,史密斯。 – Smith