Как передать переменную из сидера в factory?

У меня в сидере есть цикл:

public function run()
{
    for ($i = 0; $i < 100; ++$i) {
        CharacterEpisode::factory()->count(3)->create(['title' => $i]);
    }

}

Я хочу переменную $i передать в factory:

public function definition($title)
{
        return [
            'character_id' => $title,
            'episode_id' => $this->faker->unique()->numberBetween($min = 1, $max = 30),
        ];
}

Но у меня выдает ошибку:

Declaration of Database\Factories\CharacterEpisodeFactory::definition($title) must be compatible with Illuminate\Database\Eloquent\Factories\Factory::definition()


Ответы (1 шт):

Автор решения: Eugene

В фабрике вы указываете значения "по умолчанию" для всех атрибутов. Если нужно их переопределить, то передаете соответствующий массив. Читать тут: Переопределение атрибутов

То есть, в сиде будет так:

public function run()
{
    for ($i = 0; $i < 100; ++$i) {
        CharacterEpisode::factory()->count(3)->create(['character_id' => $i]);
    }

}

А из фабрики убрать $title.

→ Ссылка