如何在Laravel中获取最后插入的id?

9

这是我的代码

 $users = DB::table('users')->insert(array(
     'email_id' => $email_id,
     'name' => $name,
 ));

 $lastInsertedID = $users->lastInsertId();
           
 return $lastInsertedID;

我想要获取特定记录的最后一个插入 ID。我已经尝试使用 Eloquent ORM,但它没有起作用。
希望能得到任何帮助。
谢谢。

2
https://dev59.com/d2Ei5IYBdhLWcg3wptl_ 和 https://dev59.com/MF4c5IYBdhLWcg3weqW9 以及 http://smileyhappycoder.co.uk/server-side/fetching-last-insert-id-laravel/ - Alive to die - Anant
5个回答

30

使用insertGetId()

$id = DB::table('users')-> insertGetId(array(
    'email_id' => $email_id,
    'name' => $name,
));

3

遵循以下代码使用-> insert()获取最后插入的id

$lastInsertedID = DB::table('users')
                     ->insert( array(
                         'email_id' => $email_id,
                         'name' => $name
                         )
                     )
                    ->lastInsertId();

3
以下是获取最后插入的 ID 的方法:

Eloquent

方法 1

$user = new User();
$user->name = "Test";
$user->save();
dd($user->id);

Method 2

$user = User::create(['name' => 'Test']);
dd($user->id);

查询构建器

方法三

在这种方法中,主键必须是id。如果它不是id,例如some_id,那么此方法将会抛出异常

$id = DB::table('users')->insertGetId(['name' => 'Test']);
dd($id);

方法四

如果您正在使用DB Facade并且具有自定义主键,例如some_id,则此方法非常有用。

DB::table('users')->insert(['name' => 'Test']);
dd(DB::getPdo()->lastInsertId());  

1

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


这个在我的Eloquent ModelName:create方法之后完美地运行了!谢谢。 - António Lima

0

你的意思是你插入了记录ID吗?你可以通过以下方式获取:

//UserController.php

$user  = new User;
$user->name = $request->name;
$user->email = $request->email;
if($user->save()){
    echo "User's record id is ".$user->id; *//$user->id is your lastest record id*
}

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