Параметры реляционного запроса


select:    список выбираемых полей. По умолчанию значение '*'
condition: соответствует SQL оператору WHERE
params:    параметры для SQL-выражения. Параметры передаются как массив имя-значение.
on:        соответствует SQL оператору ON. Условие, указанное в этом параметре,
           будет при помощи SQL оператора AND. Неприменим для связей MANY_MANY.
order:     соответствует SQL оператору ORDER BY
with:      список дочерних связанных объектов, которые должны быть загружены с самим объектом
joinType:  тип соединения таблиц. По умолчанию значение параметра LEFT OUTER JOIN;
alias:     псевдоним таблицы, ассоциированной со связью. По умолчанию значение параметра равняется null
together:  параметр, устанавливающий необходимость принудительного соединения таблицы.
           Этот параметр имеет смысл только для связей типов HAS_MANY и MANY_MANY.
           Если параметр не установлен или равен false, тогда каждая связь HAS_MANY или MANY_MANY
           будет использовать отдельный SQL-запрос для связанных данных
           Если параметр равен true, то зависимая таблица при выполнении запроса всегда будет
           соединяться с основной, то есть будет выполнен один SQL-запрос.
join:      дополнительный оператор JOIN. По умолчанию пуст
group:     соответствует SQL оператору GROUP BY, по умолчанию значение параметра пустое.
having:    соответствует SQL оператору HAVING, по умолчанию значение параметра пустое
index:     имя столбца таблицы, значения которого должны быть использованы в качестве
           ключей массива, хранящего связанные объекты. Только для связей типа HAS_MANY и MANY_MANY.
scopes:    группы условий, которые необходимо применить. Группы необходимо перечислить в массиве
           'scopes'=>array('scopeName1','scopeName2')
limit:     параметр для ограничения количества строк в выборке. Параметр неприменим для связей BELONGS_TO
offset:    параметр для указания начальной строки выборки. Параметр неприменим для связей BELONGS_TO.
through:   имя связи модели, которое при получении данных будет использоваться как мост.
           Параметр может быть установлен только для связей HAS_ONE и HAS_MANY

К примеру

class User extends CActiveRecord
{
    public function relations()
    {
        return array(
            'posts'=>array(self::HAS_MANY, 'Post', 'author_id',
                            'order'=>'posts.create_time DESC',
                            'with'=>'categories'),
            'profile'=>array(self::HAS_ONE, 'Profile', 'owner_id'),
        );
    }
}

Параметры могут быть динамическими - они переопределяются
методом with() или просто вызовом свойства с аргументом

User::model()->with(array(
    'posts'=>array('order'=>'posts.create_time ASC'),
    'profile',
))->findAll();

// или так

$user=User::model()->findByPk(1);
$posts=$user->posts(array('condition'=>'status=1'));