📜  如何在 laravel 8 中制作工厂和播种机 - PHP (1)

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

在 Laravel 8 中制作工厂和播种机

在 Laravel 中使用工厂和播种机可以更加轻松地生成测试数据或者初始化数据库。在本文中,我们将探讨如何在 Laravel 8 中制作工厂和播种机。

创建工厂

首先,我们需要创建一个工厂来生成测试数据。在 Laravel 8 中,可以使用以下命令创建一个工厂:

php artisan make:factory {FactoryName}

其中 {FactoryName} 是你想要为工厂命名的名称,例如 UserFactory

创建好工厂后,你就可以开始定义工厂方法了。这些方法会返回一个包含测试数据的数组。例如,下面是一个创建用户的工厂方法:

public function definition()
{
    return [
        'name' => $this->faker->name(),
        'email' => $this->faker->unique()->safeEmail(),
        'password' => bcrypt('password'),
    ];
}

在上述示例中,我们使用 Faker 库生成一个随机的用户名和电子邮件地址,并使用 bcrypt 函数为密码加密。

有时候,你可能需要使用工厂的状态。在 Laravel 8 中,你可以使用以下方法定义状态:

public function someState()
{
    return $this->state(function (array $attributes) {
        return [
            'name' => 'Custom Name',
            'email' => 'custom@email.com',
        ];
    });
}

在上述示例中,我们定义了一个名为 someState 的状态,并返回一个自定义名称和电子邮件地址。你可以使用这个状态来生成数据。例如,下面是一个使用状态的工厂:

User::factory()->someState()->create();
创建播种机

接下来,我们需要创建一个播种机来初始化数据库。在 Laravel 8 中,可以使用以下命令创建一个播种机:

php artisan make:seeder {SeederName}

其中 {SeederName} 是你想要为播种机命名的名称,例如 UsersTableSeeder

创建好播种机后,你需要打开生成的文件并定义 run 方法。例如,下面是一个创建用户的播种机:

public function run()
{
    \App\Models\User::factory()->count(10)->create();
}

在上述示例中,我们使用 User 模型的工厂方法创建了 10 个用户,并使用 create 方法将它们保存到数据库中。

当你准备好运行播种机时,可以使用以下命令:

php artisan db:seed --class={SeederName}

其中 {SeederName} 是你的播种机名称。如果你想运行多个播种机,可以使用以下命令:

php artisan db:seed --class={SeederName1} --class={SeederName2}
结论

在 Laravel 8 中使用工厂和播种机可以更加轻松地生成测试数据或者初始化数据库。通过定义状态和使用工厂方法,你可以灵活地生成所需的数据。