Представим, что нужно отсортировать полученные записи из одной таблицы, по полю из другой.
Создадим абстрактную задачу.
У нас есть две таблицы `tbl_url` и `tbl_project`
tbl_url{
id,
www
}
tbl_project{
id,
url_id
}
Каждому проекту (из `tbl_project`) соответствует одно доменное имя (из `tbl_url`). Нужно получить проекты с сортировкой по полю `www` (доменное имя)
В модели Project пропишем следующую связь
public function relations() { return array( 'url'=>array(self::BELONGS_TO, 'Url', 'url_id'), ); }
Получить проекты с сортировкой по доменному имени можно так:
$criteria = new CDbCriteria; $criteria->with = array( 'url' ); $dp = new CActiveDataProvider( 'Project', array( 'criteria'=>$criteria, 'sort'=>array( 'defaultOrder'=>'url.www ASC', ) ) ); $projects = $dp->getData(); foreach($projects as $project){ //... }
Вот такой нехитрый способ.