Представим, что нужно отсортировать полученные записи из одной таблицы, по полю из другой.
Создадим абстрактную задачу.
У нас есть две таблицы `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){
//...
}
Вот такой нехитрый способ.