我有一个现有的数据库,无法修改。我目前的工作是制造工厂。
在当前情况下,我有两个表。一个是item
表,另一个是item_image
表。
一个项目有很多图像,但是特征图像ID存储在该项目中。
这是我的两个工厂:
物品工厂
$factory->define(Item::class, function (Faker $faker) {
return [
'title' => $faker->words(3, true)
'user' => function () {
return factory(User::class)->create()->id;
},
'featured_image' => function () {
return factory(Image::class)->create()->id;
},
];
});
ItemImage工厂
$factory->define(Image::class, function (Faker $faker) {
return [
'item' => function () {
return factory(Item::class)->create()->id;
},
];
});
item.featured_image
列:
item_image.item
列:
例如,当我想创建一个项目时,项目工厂是指itemImage工厂,该工厂将创建一个将创建图像的项目。 bla bla bla。它会导致无限循环。
我应该如何重写这些工厂?
感谢您的帮助。
答案 0 :(得分:0)
我认为没有一种方法可以按照您想要的方式定义工厂。
我将按照您的定义进行保存,但是以这种方式使用,这样您就不会创建额外的记录,例如:
$item = factory(Item::class)->create();
$image = $item->image; // instead of factory(Image::class)->create(); since record is created
或
$image = factory(Image::class)->create();
$item = $image->item;