In my code I use this
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('t.id',$this->id);
$criteria->compare('typeId',$this->typeId);
$criteria->compare('countryId',$this->countryId);
$criteria->compare('t.title',$this->title,true);
$criteria->compare('content',$this->content,true);
$criteria->compare('created',$this->created,true);
$criteria->compare('deleted',$this->deleted,true);
$criteria->with=array('type', 'country');
return new CActiveDataProvider(
$this,
array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'type.id ASC, country.title ASC, t.title ASC',
'attributes'=>array(
'type.title'=>array(
'asc'=>$expr='type.title',
'desc'=>$expr.' DESC',
),
'country.title'=>array(
'asc'=>$expr='country.title',
'desc'=>$expr.' DESC',
),
'*'
)
),
'pagination'=>array(
'pageSize'=>Yii::app()->params['pagination']['backoffice'],
),
)
);
}