📜  laravel eloquent 批量插入 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:33.304000             🧑  作者: Mango

Laravel Eloquent 批量插入

在 Laravel 中使用 Eloquent 时,我们有时候需要批量插入多个数据,而不是一个个地插入。这种情况下,可以使用 Eloquent 的 insert 方法来实现批量插入。

insert 方法

insert 方法可以接收一个数组,数组的每个元素都是需要插入到表中的一行数据。例如,下面的代码可以将三个用户插入到 users 表中:

DB::table('users')->insert([
    ['name' => 'John Doe', 'email' => 'johndoe@example.com'],
    ['name' => 'Jane Doe', 'email' => 'janedoe@example.com'],
    ['name' => 'Bob Smith', 'email' => 'bobsmith@example.com']
]);

在插入数据时,可以设置插入多个相同数据。例如,下面的代码可以将三个相同的用户插入到 users 表中:

DB::table('users')->insert([
    ['name' => 'John Doe', 'email' => 'johndoe@example.com'],
    ['name' => 'John Doe', 'email' => 'johndoe@example.com'],
    ['name' => 'John Doe', 'email' => 'johndoe@example.com']
]);

insert 方法返回插入的行数。

使用 Eloquent 的 create 方法

除了 insert 方法,我们还可以使用 Eloquent 的 create 方法来批量插入多条数据。不过这种方法需要我们提前设置好 Eloquent 模型的 $fillable 属性,以保证能够正确地填充数据。

例如,假设我们有一个 User 模型,该模型有 nameemail 两个属性:

class User extends Model
{
    protected $fillable = ['name', 'email'];
}

我们可以使用以下代码来批量插入用户数据:

User::create([
    ['name' => 'John Doe', 'email' => 'johndoe@example.com'],
    ['name' => 'Jane Doe', 'email' => 'janedoe@example.com'],
    ['name' => 'Bob Smith', 'email' => 'bobsmith@example.com']
]);

需要注意的是,Eloquent 的 create 方法会自动为每个插入的模型创建相应的记录。因此,我们无需担心插入重复的数据。

总结

在本文中,我们介绍了使用 Eloquent 批量插入多条数据的两种方法:使用 insert 方法和使用 Eloquent 的 create 方法。这两种方法都能够有效地减少插入数据的时间和工作量,让开发者更加高效地管理数据。