factory = $factory; $this->relationship = $relationship; } /** * Create the child relationship for the given parent model. * * @param \Illuminate\Database\Eloquent\Model $parent * @return void */ public function createFor(Model $parent) { $relationship = $parent->{$this->relationship}(); if ($relationship instanceof MorphOneOrMany) { $this->factory->state([ $relationship->getMorphType() => $relationship->getMorphClass(), $relationship->getForeignKeyName() => $relationship->getParentKey(), ])->create([], $parent); } elseif ($relationship instanceof HasOneOrMany) { $this->factory->state([ $relationship->getForeignKeyName() => $relationship->getParentKey(), ])->create([], $parent); } elseif ($relationship instanceof BelongsToMany) { $relationship->attach($this->factory->create([], $parent)); } } /** * Specify the model instances to always use when creating relationships. * * @param \Illuminate\Support\Collection $recycle * @return $this */ public function recycle($recycle) { $this->factory = $this->factory->recycle($recycle); return $this; } }