Задать вопрос
@santaatnas
Java, Python, Php

Где хранить кастомные классы бизнес логики в Yii2 и стоит ли хранить запросы к бд в ее модели?

Всем здравствуйте, подскажите пожалуйста по такому вопросу. Yii2 advanced, допустим есть модель таблицы, находиться в папке frontend/models/Review.php, она описывает одноименную таблицу в бд "review" и наследуется от класса ActiveRecord, таблица содержит набор полей и нам необходимо получить, допустим, все записи по дате. Создаем метод public static function getReviewByData( $data )...который возвращает нам наши записи. Правильно ли делать модель толстой и хранить там всю логику, все методы получения и записи данных, а потом в контроллере вызывать их, либо стоит создать отдельный класс для CRUD-манипуляций и вызывать методы из него, либо вообще ( видел примеры когда создают запросы к бд во view, что считаю в корне неправильным ). И другой вопрос, где в шаблоне advanced хранить бизнес логику (свои классы), какие правильные практики существуют ( естественно чтобы была возможность автозагрузки классов стандартными средствами yii2 ). Допустим я хочу реализовать какой-либо паттерн, мне стоит хранить весь паттерн в каком либо одном namespace или разные классы и интерфейсы в разных namespace...Заранее спасибо за ответ.
  • Вопрос задан
  • 1199 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Максим Тимофеев К ответам на вопрос (3)
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
таблица содержит набор полей и нам необходимо получить, допустим, все записи по дате. Создаем метод public static function getReviewByData( $data )...который возвращает нам наши записи. Правильно ли делать модель толстой

Вот что по этому поводу говорят доки:
www.yiiframework.com/doc-2.0/guide-db-active-recor...
а именно советуют создавать класс ModelQuery унаследованный от ActiveQuery при этом имея класс Model унаследованный от ActiveRecord и при как правило сюда еще добавляется ModelSearch. В доках все лежит в model, но я внутри model создаю подпапки query и search.
Ответ написан