首页 > PHP > Laravel教程 获取写入数据表ID

Laravel教程 获取写入数据表ID

2025-03-10 14:57:16

在 Laravel 中,无论是使用查询构造器还是 Eloquent ORM,在执行插入操作后获取刚写入记录的 ID 都是非常常见的需求。下面是分别使用这两种方式来实现这一功能的教程。

使用查询构造器

当你使用查询构造器执行插入操作时,可以使用 insertGetId 方法来插入数据并获取新插入行的 ID。此方法会返回插入行的自增 ID。

use Illuminate\Support\Facades\DB;

// 插入数据并获取ID
$id = DB::table('users')->insertGetId(
    ['name' => 'John Doe', 'email' => 'johndoe@example.com']
);

echo "The inserted ID is: $id";

在这个例子中,我们向 users 表插入了一条新的记录,并立即获取了这条记录的 ID。

使用 Eloquent ORM

当使用 Eloquent ORM 时,你可以创建一个新的模型实例,设置其属性,然后调用 save 方法。保存后,你可以在模型实例上调用 id 属性(或你的模型主键名)来获取新记录的 ID。

use App\Models\User;

// 创建新用户实例并设置属性
$user = new User();
$user->name = 'John Doe';
$user->email = 'johndoe@example.com';

// 保存用户并获取ID
$user->save();

$id = $user->id;

echo "The inserted ID is: $id";

或者,你可以使用 create 方法,它会返回一个包含了所有属性(包括新生成的 ID)的模型实例:

use App\Models\User;

// 插入数据并获取新创建的模型实例
$user = User::create(['name' => 'John Doe', 'email' => 'johndoe@example.com']);

// 获取插入行的ID
$id = $user->id;

echo "The inserted ID is: $id";

确保你的 User 模型已经正确设置了 $fillable 属性,以允许批量赋值:

 

 

protected $fillable = ['name', 'email'];

通过这些方法,你可以轻松地在 Laravel 中插入数据后获取新记录的 ID,无论你是倾向于使用查询构造器还是 Eloquent ORM。

在 Laravel 中,如果你使用 DB::insert 方法直接执行插入语句,那么这个方法只会返回一个布尔值来表示操作是否成功,并不会返回插入行的 ID。如果你需要获取插入后的自增 ID,你应该使用 insertGetId 方法,而不是 DB::insert

这里是如何使用 insertGetId 的例子:

use Illuminate\Support\Facades\DB;

// 插入数据并获取新插入行的ID
$id = DB::table('users')->insertGetId(
    ['name' => 'John Doe', 'email' => 'johndoe@example.com']
);

echo "The inserted ID is: $id";

这段代码向 users 表中插入了一条新的记录,并且通过 insertGetId 方法获取了这条新记录的自增主键 ID。

需要注意的是,insertGetId 方法假设你的表使用的是自增的主键。如果你的表结构不是这样,或者你想获取的 ID 不是自增主键,你可能需要调整你的查询或使用不同的策略来获取所需的 ID 值。

此外,请确保替换 'users' 和数组中的字段名及对应的值为你实际数据库表和数据。如果你正在处理的数据表没有自增的 ID 字段,那么你需要根据具体情况修改你的逻辑来获取相应的 ID。

使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top