📜  laravel 一次创建多个模型 - PHP (1)

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

Laravel 一次创建多个模型

在Laravel中,创建并保存多个模型实例是常见的操作。这可以通过使用 createMany() 方法或在请求中通过参数数组来完成。我们将探讨这两种方法,看看它们如何实现。

使用 createMany() 方法

createMany() 方法可以接受一个包含多个模型属性的数组,然后使用一个数据库事务来创建和保存这些模型实例。以下是示例代码:

$users = [
    ['name' => 'John Doe', 'email' => 'john@example.com'],
    ['name' => 'Jane Doe', 'email' => 'jane@example.com'],
    ['name' => 'Bob Smith', 'email' => 'bob@example.com'],
];

User::createMany($users);

这将在数据库中创建三个用户,每个用户都有 nameemail 属性。

在请求中使用参数数组

在处理请求时,你可以使用一个包含多个模型属性的数组来一次性创建多个模型实例。此方法在将数据传递给控制器方法时很有用。以下是示例代码:

public function store(Request $request)
{
    $data = $request->all();

    $users = [];

    foreach ($data['users'] as $userData) {
        $users[] = new User($userData);
    }

    User::insert($users);

    return redirect()->route('users.index');
}

这将使用 $data['users'] 数组中的每个元素来创建一个新的 User 实例,并将它们插入到数据库中。你可以调整此代码来适应你自己的需求。

结论

以上方法是Laravel中创建和保存多个模型实例的两种主要方法。使用 createMany() 可以简化代码,但只适用于要创建和保存的模型实例数量较少的情况。 在请求中使用参数数组更加灵活,可以应用于任何数量的模型实例。

参考链接 https://laravel.com/docs/8.x/eloquent#mass-assignment: