模型工厂原创
# 创建工厂
php artisan make:factory PostFactory
新工厂将放置在你的 database/factories
目录下。
# 初始化数据库并填充数据
php artisan migrate:refresh --seed
# 使用
$user = User::factory()->make(); // 创建一个实例 不会保存到数据库
$users = User::factory()->count(3)->make(); // 创建3个实例 不会保存到数据库
$user = User::factory()->create(); // create 创建的实例会保存到数据库中;
$users = User::factory()->count(3)->create(); // create 创建的实例会保存到数据库中;
$user = User::factory()->create([
'name' => 'Abigail', // 重新设置 name 字段内容
]);
// Y N 顺序切换
$users = User::factory()
->count(10)
->state(new Sequence(
['admin' => 'Y'],
['admin' => 'N'],
))
->create();
// 随机分配角色
$users = User::factory()
->count(10)
->state(new Sequence(
fn ($sequence) => ['role' => UserRoles::all()->random()],
))
->create();
// 根据用户基本信息 创建21条 用户、工作者、用户信息,随机分配性别
$userBase = UserBaseInfo::factory()
->count(21)
// 创建用户
->has(User::factory()->state(function (array $attributes, UserBaseInfo $userBaseInfo) {
return ['user_base_info_id' => $userBaseInfo->id]; // 将
}))
// 创建工作者
->has(Worker::factory()->state(function (array $attributes, UserBaseInfo $userBaseInfo) {
return ['user_base_info_id' => $userBaseInfo->id]; // 将
}))
// 创建用户身份信息
->has(UserIdInfo::factory()->state(function (array $attributes, UserBaseInfo $userBaseInfo) {
return ['user_base_info_id' => $userBaseInfo->id];
}))
->state(new Sequence(
['gender' => 'w'],
['gender' => 'm'],
['gender' => 'o'],
))
->create();
# faker
点击查看
# 生成唯一
$this->faker->unique();
# 字符和数字
# 数字
$faker->randomDigit(); // 0到9
$faker->randomDigitNot(2); // 0到9 不包含2
$faker->randomNumber(5, false); // 0到最大5位数
$faker->randomNumber(5, true); // 5位数
# 句子
$faker->sentence(); // 默认生成包含6个单词的单句
$faker->sentence(3); // 生成指定数量单词的单句。
$faker->sentences(); // 默认生成包含3个分句的句子。
$faker->sentences(2); // 生成指定数量分句的句子。
$faker->paragraph(); // 默认3个句子的段落
$faker->paragraph(2); // 生成指定数量句子的段落。
$faker->paragraph(2, false);
$faker->paragraphs(); // 默认3个句子的段落
$faker->text(); // 默认200长度的文本
$faker->text(50); // 指定长度的文本
# 使用正则表达式
$this->faker->regexify('/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|17[0-9]|18[0-9])\d{8}$/');
# 图片
$faker->imageUrl(360, 360, 'animals', true, 'dogs', true, 'jpg'); // 宽(默认640)、高(默认640)、图片分类(默认null)、随机化(只有true)、图片分类关键字(默认null)、图片格式(默认png)
``
上次更新: 2022/08/23, 18:12:45