Как более правильно сохранять в одном действии связанные сущности?
Привет участники!
Вопрос такой. Есть некие сущности, которые надо сохранять в одном экшене, в рамках одной транзакции.
Это разные таблицы, имеющие внешние ключи друг на друга.
В рамках архитектуры Laravel - как это правильно делать?
1. Как разграничить в одной форме данные между разными моделями? Через input-массивы вида fileld[model]?
2. Как обрабатываются в таком случае ошибки? Будут ли нормально отрабатывать Request-классы с валидацией и вывод ошибок?
3. Как должен примерно выглядеть код сохранения множественных/связанных моделей?
В рамках архитектуры Laravel - как это правильно делать?
Нету "архитектуры Laravel". Есть архитектура вашего приложения. Laravel не диктует архитектуру вашего приложения. Если фреймворк диктует архитектуру приложения - это не должен быть фреймворк общего назначения как минимум.
1. Как разграничить в одной форме данные между разными моделями? Через input-массивы вида fileld[model]?
На фронтенде нету ваших "моделей". Есть поля формы и ничего больше, какие модели нужно править, и к какой модели какие поля относятся - забота вашего бэкенда. Формы и модели не должны зависеть друг от друга никак.
Пришли данные - работайте с ними как вам надо. Мапьте на разные DTO если нужно.
Как обрабатываются в таком случае ошибки?
Как обычно, а какие проблемы?
Провалидировали данные => вернули ошибку если что-то не так.
Будут ли нормально отрабатывать Request-классы с валидацией и вывод ошибок?
А почему им вдруг не работать? Они же никак не связаны с вашими моделями.
3. Как должен примерно выглядеть код сохранения множественных/связанных моделей?
Ну, если у вас AR то
$model1->save();
$model2->save();
связанных
Погуглил за вас, ушло 20 секунд(в любом случае быстрее чем ждать помощи на Тостере):
"If you would like to save your model and all of its associated relationships, you may use the push method: ..." (c) документация