在Laravel 4中使用DB :: insert()返回新的id

Nyx*_*nyx 28 laravel laravel-4

在Laravel 4中,当你执行a时DB::insert(),如何获得刚刚插入的行的ID?与我们的功能类似->insertGetId().使用的原因DB::insert()是它是一个复杂的PostgreSQL查询,无法使用Fluent构建.

示例查询:

$newId = DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
echo $newId; // returns 1
Run Code Online (Sandbox Code Playgroud)

Ble*_*ing 47

有一个insertGetId方法.

$id = DB::table('users')->insertGetId(
    array('id' => 1, 'name' => 'Dayle Rees')
);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但我需要将`RAW` SQL语句传递给我的数据库,因此使用Fluent的`insertGetId`将无法提供帮助. (5认同)

Phi*_*rks 42

如果你看一下,Illuminate\Database\ConnectionInterface你可以看到这些函数的编写方式.不幸的是DB::insert()返回一个布尔值,此刻PDOStatement::execute()没有DB::insertGetId().如果这有用,那么你应该在GitHub上请求它.

与此同时,您应该可以使用 DB::getPdo()->lastInsertId()


小智 9

有一种insertGetId()方法,如下:

$dataset = array('column_id' => 1, 'name' => 'Dayle');
$column_id = DB::table('users')->insertGetId($dataset,'column_id');
Run Code Online (Sandbox Code Playgroud)