📜  laravel 从插入中获取 ID - PHP (1)

📅  最后修改于: 2023-12-03 14:43:46.704000             🧑  作者: Mango

Laravel 从插入中获取 ID

在 Laravel 中,我们可以使用 Eloquent ORM 来操作数据库,使用 $model->save() 方法来插入数据。但是在插入数据后,我们可能需要获取插入数据的 ID,以便后续操作或者展示给用户。

本文将介绍如何在 Laravel 中插入数据后获取插入的 ID。

使用 $model->id

在使用 $model->save() 方法插入数据后,我们可以使用 $model->id 属性来获取插入数据的 ID。例如:

$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->save();

$id = $user->id;

这种方法非常简单,但是需要注意的是,只有在插入数据后调用 $model->id,才能获取到正确的 ID。如果在执行 $model->save() 前调用 $model->id,它将返回 null

使用 $model->getKey()

另一个可以获取插入数据 ID 的方法是使用 $model->getKey()。这个方法可以在插入数据之前调用,同时在插入数据之后也可以调用。例如:

$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$idBeforeSave = $user->getKey(); // null
$user->save();
$idAfterSave = $user->getKey(); // 1

其中,$idBeforeSave 的值为 null,因为数据还没有插入到数据库。而 $idAfterSave 的值为插入数据的 ID。

使用 insertGetId 方法

除了使用 Eloquent 的方式插入数据之外,我们还可以使用 Query Builder 的 insertGetId 方法插入数据,并返回插入的 ID。例如:

$id = DB::table('users')->insertGetId(
    ['name' => 'John Doe', 'email' => 'john@example.com']
);

这种方式与 Eloquent 的方式略有不同,不需要先创建一个 Model 对象,而是直接使用 Query Builder,同时也不需要调用 $model->save() 方法。

总结

本文介绍了三种在 Laravel 中插入数据后获取插入的 ID 的方法:

  • 使用 $model->id 属性,但需要注意只有在插入数据后调用 $model->id,才能获取到正确的 ID。
  • 使用 $model->getKey() 方法,这个方法可以在插入数据之前调用,同时在插入数据之后也可以调用。
  • 使用 Query Builder 的 insertGetId 方法,这种方式略有不同,不需要先创建一个 Model 对象,而是直接使用 Query Builder。

可根据具体情况选择合适的方法。