YiiFramework Yii2 создание и сохранение реляционных записей

Vano

Новичок
Как бы красивее организовать создание и сохранение реляционных записей?
Нужно работать с записью одной таблицы, и несколькоми реляционными записями другой.
На странице создания должны быть форма: Мейн таблицы, плюс несколько форм, или одна форма вспомогательных таблиц. Тоесть одну запись мейн и несколько или одну запись вспомогательной.

Подскажите пожалуйста что должно в экшне быть, что в моделях, что во вьюшке. Только, прошу писать тех кто умеет это чисто и красиво сделать, а не в контроллере понапихать кучу ифов и форичей. Вот к примеру, как мне кажется, полюбому нужно использовать ->populateRelation, public function transactions() в моделе.. Просто каша в голове из этого всего, куча разных вариантов на форумах увидел, боюсь слишком долго искать правильный.

Обьяснять мне можна на словах)) просто логическую растановку действий в контроллере, моделях.
Наверное много прошу?) За такое деньги нужно платить?) Я бы ответил если б знал...
 

fixxxer

К.О.
Партнер клуба
Все это должно быть на уровне моделей, разумеется.
Как это сделать красиво с Active Record-ами, я не знаю - с ними редко что вообще можно сделать красиво.
Ну сделай какой-то сервисный класс на уровне model и заверни там все в транзакцию.
 
  • Like
Реакции: Vano

Redjik

Джедай-мастер
Если все совсем красиво делать то это с командами, доменными событиями и dto, но я тебе расскажу о более менее приемлемом варианте, хоть и немного говнокод )))
1) В контроллере из реквеста получаешь модели, создаешь инстанс сервисного объекта в конструктор ему пихаешь все модели.
2) в сервисном объекте в методе save прогоняешь валидацию и сохранение в транзакции, метод возвращает bool
3) в контроллере вызываешь в if этот метод, если все прошло успешно редирект, если нет то все ошибки у тебя в моделях

ЗЫ. Пишу с телефона, скинь потом на пастебин код, подскажу.
 
  • Like
Реакции: Vano

Vano

Новичок
Спасибо за ответы, щас буду пробывать, наверное завтра отпишу.
 
Сверху