【发布时间】:2021-06-29 19:42:29
【问题描述】:
我有两个工厂,一个用于类别,另一个用于产品。当我运行工厂时,我想为生成的每个类别创建 x 个产品。我将如何编写代码来生产这个?
类别的定义是这样写的:
return [
'name' => $this->faker->word,
'slug' => Str::slug($this->faker->unique()->word, '-'),
];
产品的定义是这样写的:
return [
'category_id' => 1, //instead of 1 the category id used i want to be random
'name' => $this->faker->word,
'slug' => Str::slug($this->faker->unique()->word, '-'),
'description' => $this->faker->paragraph,
'price' => $this->faker->randomFloat(2, 0, 10000),
'is_visible' => 1,
'is_featured' => 1
];
如您所见,我对category_id 进行了硬编码,我不太确定如何让它自动生成并为每个存在的类别创建一个产品。我有这样写的类别的工厂,以创建 10 个项目
Category::factory()
->count(10)
->create();
我尝试了这个尝试和错误,认为它会起作用,但我收到一个错误 category_id cannot be null 。
Product::factory()
->has(Category::factory()->count(2))
->count(20)
->create();
【问题讨论】:
标签: php laravel eloquent factory