LINUX.ORG.RU

Сложная Модель Yii2

 


0

1

Таблица список «auto»

+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+
| Field   | Type         | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment      |
+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+
| id      | int(11)      | NULL               | NO   | PRI | NULL    | auto_increment | select,insert,update,references |              |
| name    | varchar(255) | utf8mb3_general_ci | NO   | UNI | NULL    |                | select,insert,update,references | имя          |
+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+--------------+
Таблица «tags» автомобилей (К примеру: синий, битый, прожорлива)
+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+-------------------------------------+
| Field   | Type         | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment                             |
+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+-------------------------------------+
| id      | int(11)      | NULL               | NO   | PRI | NULL    | auto_increment | select,insert,update,references |                                     |
| auto_id | int(11)      | NULL               | NO   |     | NULL    |                | select,insert,update,references | Идентификатор узла                  |
| value   | varchar(255) | utf8mb3_general_ci | NO   |     | NULL    |                | select,insert,update,references | Значение                            |
+---------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+-------------------------------------+
Задача action view/create/update!

Как подойти к решению в философии Yii2:

  • Создать две Models и один Controller?
  • Создать одну Model со сложным запросом SQL?
★★★★★

модели, т.е. репозитории, которые с ними работают, объединяются на сервисном уровне. В контроллере по-хорошему у тебя должны быть только всякие обработки веб параметров и тому подобное. Хотя как там в уй я доподлинно не знаю, помню выглядел он вцелом неуклюже и с какой-то придурью типа эктиврекорда (такой антипаттерн, когда модель с запросами прочими и методами) из губи на гейсах

Syncro ★★★★★
()

т.е. сервисный класс к конкретной модели или репозиторию уже не привязан, главное что-бы он сам по себе соблюдал единичность своей ответственности, а в контроллеры не стоит это пихать потому что может потребоваться переиспользовать

Syncro ★★★★★
()

Две простые модели, одна использует другую как зависимость. Сколько контроллеров, зависит от того какое будет API. Если тебе надо, например CRUD по тегам отдельно, то нужен отдельный контроллер.

no-such-file ★★★★★
()

Как подойти к решению в философии Yii2:

Никак, в Yii2 нет никаких философий и ограничений, он фреймворк и может как в AR, так и в DDD, что позволяет делать крайне непохожие вещи.

Если у тебя задача тупо в CRUD и то что описано в таске - это все, логичнее смотреть в сторону MVC и AR, для AR идет однозначное сопоставление Model=таблица.

BaBL ★★★★★
()