Это мой GridView:Yii GridView сортировать по связанной колонке
$this->widget('GridView', array(
'id'=>'subscribers',
'enableExport' => true,
'export'=>'payments',
'dataProvider'=>$model->search(),
'columns'=>array(
array(
'name'=>'name',
'type'=>'html',
'value'=>'$data->user->name',
),
array(
'name'=>'city',
'type'=>'html',
'value'=>'is_object($data->user->location) ? $data->user->location->city->name : ""',
),
)
);
И это содержание модели:
$criteria=new CDbCriteria;
$criteria->with = array('subgym');
$criteria->compare('id',$this->id);
$criteria->compare('user_id',$this->user_id);
$criteria->compare('contribution',$this->contribution);
$criteria->compare('abtype_id',$this->abtype_id);
$criteria->compare('gym_id',$gym_id);
$criteria->compare('has_companion',$this->has_companion,true);
$criteria->compare('companion',$this->companion,true);
$criteria->compare('companion_abtype',$this->companion_abtype);
$criteria->compare('subgym.city_id', $this->cityId);
if ($this->location != '') {
$criteria->join = "left join users usr on usr.id = t.user_id join locations loc on loc.id = usr.location_id";
$criteria->compare('loc.id', $this->location);
//$criteria->compare('loc.city_id', $this->city, true);
}
$criteria->compare('value_paid',$this->value_paid);
$criteria->compare('month',$sub_month);
$criteria->compare('year',$sub_year);
$criteria->compare('paid',$this->paid);
$criteria->order = 't.id desc';
$sort = new CSort;
$sort->defaultOrder = 'user_id ASC';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array(
'pageSize' => 20,
),
'sort' => $sort,
));
и это контроллер:
$model = new FitnessSubscriber('search');
$this->render('index', array(
'model' => $model,
));
Я хочу для сортировки имени столбца и города столбца desc или asc. Как я могу это сделать ?
ОБНОВЛЕНИЕ: Я обновил поля критериев. Повторите попытку.
thx для справки. но я получил это: свойство «CDataColumn.hameder» не определено. Это работает: массив ( \t \t 'имя' => 'имя', \t \t 'типа' => 'HTML', \t \t 'значение' => '$ данных-> user-> имени', \t \t), но если бы я нажал на столбец, ничего не произошло –
«user.name» представляет имя столбца из моей таблицы? –
Я обновил поля критериев, пожалуйста, проверьте его снова :) –