Как правильно выводить страницу с несколькими блоками материалов по разным параметрам в Yii2?
Нужно на страницу выводить несколько блоков материалов (статей). В каждый из блоков, материалы выбираются по своим критериям. Логично в action писать $blockNodes1 = $query1->all(); $blockNodes2 = $query2->all(); .... т.е. для каждого блока (выборки) писать свой ActiveQuery и передавать в рендеринг соответствующее количество блоков материалов (массивов Active Record ) - но при таком подходе понятие "тонкий контроллер" становится очень условным (т.к. $queryN идет с join ами по нескольким связям). Еще вариант писать портлеты для идентичных блоков. Ну и ваш вариант? Как правильно?
Выборки по определенным критерия как раз лучше хранить в scopes. Тут можно почитать https://habrahabr.ru/post/255545/ Честно. во второй версии, еще не использовал, но в первой версии все время.
Дмитрий Воронков: т.е. идея переопределить find в классе модели и выводить в результате find свой экзепляр класса ActiveQuery, в котором и прописывать свои методы (скоупы), например у меня есть класс Node (записи) и есть 2 связи: Region (регионы со связью many-many) Block (блоки расположения со связью many-many)
в результате можно будет делать так: Node::find()->withRegions([1, 2]) (для региона 1 и 2 и всех блоков) или Node::find()->withRegions(2)->withBlocks(1) (для 2 региона и блока), где withRegions() и withBlocks() - методы переопределенного класса от ActiveQuery. Правильно вас понял?