📜  laravel faker value 或 null - PHP (1)

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

Laravel Faker 的使用及其生成的值或 null

Laravel Faker 是 Laravel 框架提供的一个用于生成虚假数据的库,可用于填充数据库。 它是内置于 Laravel 的,无需单独安装即可使用。

如何使用

要使用 Larave Faker,请先安装 Laravel 然后在终端中输入以下命令:

php artisan make:factory UserFactory --model=User

以上命令会创建一个名为 UserFactory 的文件,并在文件夹 database/factories 中创建。

UserFactory 文件中可以定义生成虚假数据的规则:

use Illuminate\Support\Str;
use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => bcrypt('secret'),
        'remember_token' => Str::random(10),
    ];
});

可以定义生成虚假数据的字段和类型,此处定义了 nameemailpassword 等字段,用 $faker 实例调用了相关的方法,如 name 生成随机姓名,unique()->safeEmail 生成唯一的安全邮箱地址,bcrypt('secret') 生成的密码通过 bcrypt 加密。

接下来,我们可以使用 Laravel 内置的 模型工厂 来生成虚假数据。在我们的测试中,我们可以通过以下方式来调用 UserFactory 来创建虚假数据:

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

以上代码将创建一个名为 $user 的虚假用户数据。

生成的值或 null

根据定义的规则,我们可以通过 $faker 的方法来生成想要的值。例如:

'phone' => $faker->phoneNumber, // 返回随机电话号码
'address' => $faker->address, // 返回随机地址
'number' => $faker->numberBetween($min = 1, $max = 100), // 返回 1 到 100 中的随机整数
'boolean' => $faker->boolean, // 返回随机 Boolean 值
'sentence' => $faker->sentence($nbWords = 6, $variableNbWords = true), // 返回随机句子

如果需要生成 null 值,可以使用 $faker->optional() 方法:

'optional_field' => $faker->optional()->numberBetween(1, 10), // 50% 的概率返回 null,50% 的概率返回 1 到 10 中的随机整数

当想要生成 null 值占比大于 50% 时,可以再次使用 $faker->optional() 方法实现:

'optional_field' => $faker->optional($weight = 0.7, $default = null)->numberBetween(1, 10), // 70% 的概率返回 null,30% 的概率返回 1 到 10 中的随机整数
结论

Laravel Faker 是一个非常有用的工具,可以帮助我们轻松的生成虚假数据,填充数据库,并能够按需生成 null 值。如果想要更深入的学习,可以查看官方文档或扩展包源代码。