Как можно реализовать разное поведение метода afterFind в зависимости от определенного условия.
Например, при выводе ленты материалов мне не нужны некоторые данные из других таблиц, которые получаются в методе afterFind, а на странице самого материала — нужны.
Другими словами, мне нужно в методе afterFind создать блок условий. Только не соображу, за что цепляться в условии.
Как правильно это можно реализовать?
Сейчас получение данных выглядит так: ModelClass::model()->findAll($criteria);
Я пытался задавать значения атрибутов класса до вызова метода findAll(), но метод findAll() создает на каждую найденную запись новый экземпляр объекта, соответственно, значение атрибута теряется.
Что-то вы не то делаете, мне кажется. Если в каком-то случае не нужны данные из связанных таблиц — не выбирайте их. Не? А когда надо, вынесите в скоуп и в нужном контроллере перед выборкой подключайте скоуп этот.
Данные не из связанных таблиц.
Это дополнительные данные, которые дополняют основную информацию.
Например, если брать пример страницы со статьей, то это дополнительными данными в этом случае могут быть графики просмотров этой статьи, товары на тему статьи, другие статьи на эту тему и т.д.
Эти данные не нужны в списке материалов, но на других страницах они могут быт нужны.
Поэтому я сделал через геттер получение этих данных отложенным — до момента необходимости их получения