Laravel - 两个工厂互相引用

Laravel - two factories refer to each other

我有一个现有的数据库,什么是不可修改的。我现在的工作是做工厂。

在本例中,我有两个 table。一个是itemtable,一个是item_imagetable.

一个商品有很多张图片,但是商品中存储了featured-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 工厂,它将创建一个项目,该项目将创建一个图像。布拉布拉布拉。它会导致无限循环。

我应该如何重写这些工厂?

感谢您的帮助。

我认为没有办法按照您想要的方式定义工厂..

我会按照您的定义保留它,但会以这种方式使用,这样您就不会创建额外的记录,例如:

$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;