Предположим, у меня есть модель User, которая связана с моделями Image, Card и т. Д. Это означает, что когда я создаю нового пользователя, я должен создавать вместе с ним экземпляры Image и Card, например. У меня есть что-то вроде этого в методе store моего контроллера:
DB::beginTransaction();
try {
$user->saveOrFail();
$imageObj = new Image();
$imageObj->user_id = $user->id;
// set the other fields
$imageObj->saveOrFail();
$cardObj = new Card();
$cardObj->user_id = $user->id;
// set the other fields
$cardObj->saveOrFail();
.......................
DB::commit();
}
return redirect('some');
}
Для более чем 2 связанных моделей в контроллере слишком много кода, поэтому есть ли какие-нибудь мысли или рекомендации о том, где разместить этот код для лучшей масштабируемости?
Я бы выбрал Фабрику. С помощью этого шаблона вы можете легко создать свой новый объект и вместе с ним все, что вам нужно. Вы просто должны передать правильные параметры вашему сервису.
проверьте эти документы для создания фабричного шаблона в SYmfony
https://symfony.com/doc/current/service_container/factories.html
Других решений пока нет …