📜  laravel 工厂 (1)

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

Laravel 工厂介绍

Laravel 工厂是 Laravel 框架提供的一种方便的数据填充解决方案,可以快速地生成模型数据,方便测试和开发。

工厂定义

工厂定义通常位于 database/factories 目录下,以模型名称为文件名。工厂定义可以使用 Faker 随机数据生成器生成各种类型的数据,并使用 Eloquent 模型创建和保存数据。

以下是示例代码:

// database/factories/UserFactory.php

use App\User;
use Faker\Generator as Faker;

$factory->define(User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => bcrypt('secret'), // 默认密码为 'secret'
        'remember_token' => str_random(10),
    ];
});
工厂使用

在测试或开发中,可以使用 factory 函数创建一个模型实例。可以使用以下代码生成一个新的 User 模型实例:

$user = factory(App\User::class)->make();

也可以使用以下代码向数据库中插入一个新的 User 记录:

$user = factory(App\User::class)->create();

可以使用属性数组覆盖工厂定义中的默认属性:

$user = factory(App\User::class)->states('admin')->make();

// 设置属性数组:
$user = factory(App\User::class)->make([
    'name' => 'John Doe',
    'email' => 'john@example.com',
]);
工厂状态

Laravel 工厂还支持定义工厂状态,以便更灵活地生成数据。

以下是示例代码:

$factory->state(App\User::class, 'admin', [
    'role' => 'admin',
]);

可以使用以下代码生成一个带有 admin 状态的 User 模型实例:

$user = factory(App\User::class)->states('admin')->make();
总结

Laravel 工厂是一个非常有用的数据库填充解决方案,可以方便地生成测试数据和填充开发数据。我们只需要定义工厂,选择需要的状态和属性,然后就可以快速地生成数据,并且不需要手动填充数据。