Как передать переменную из сидера в 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.