📅  最后修改于: 2023-12-03 15:32:33.368000             🧑  作者: Mango
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),
];
});
可以定义生成虚假数据的字段和类型,此处定义了 name
,email
,password
等字段,用 $faker
实例调用了相关的方法,如 name
生成随机姓名,unique()->safeEmail
生成唯一的安全邮箱地址,bcrypt('secret')
生成的密码通过 bcrypt
加密。
接下来,我们可以使用 Laravel 内置的 模型工厂 来生成虚假数据。在我们的测试中,我们可以通过以下方式来调用 UserFactory
来创建虚假数据:
$user = factory(App\User::class)->create();
以上代码将创建一个名为 $user
的虚假用户数据。
根据定义的规则,我们可以通过 $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 值。如果想要更深入的学习,可以查看官方文档或扩展包源代码。