Я немного запутался по поводу заводов в Ларавеле.
Фабрики, о которых все говорят, — это возможность создавать фиктивные объекты, чтобы вы могли тестировать или просто быстро генерировать фиктивные объекты для ваших тестов.
Вы обычно используете Faker
помощник, чтобы получить случайные данные.
Теперь у меня есть еще один частый случай использования, который требует фабрики, это создание объектов.
Так, например, в TreeController@store
У меня есть статический метод для создания / обновления настроек:
$championship->settings = ChampionshipSettings::createOrUpdate($request, $championship);
с
public static function createOrUpdate(Request $request, Championship $championship): ChampionshipSettings
{
$request->request->add(['championship_id' => $championship->id]);
$arrSettings = $request->except('_token', 'numFighters');
$settings = static::where(['championship_id' => $championship->id])->first();
if ($settings == null) {
$settings = new self();
}
$settings->fill($arrSettings);
$settings->save();
return $settings;
}
Думаю, я бы использовал фабрики для управления созданием объектов, но не могу, потому что уже использую их для фиктивного контента.
Кроме того, я мог бы использовать другой случай на своих заводах, но это начало увеличивать сложность, которую, я думаю, я мог бы избежать.
Затем я мог бы использовать существующую фабрику, но если я не укажу атрибут, он сгенерирует случайный атрибут, поэтому мне нужно будет установить все неиспользуемые атрибуты в ноль перед созданием …
Ну, я немного озадачен тем, как мне управлять своими фабриками …
Задача ещё не решена.
Других решений пока нет …