В Books
Модель имеет отношение:
public function relations()
{
return array(
'authors' => array(self::BELONGS_TO, 'Authors', array('author_id'=>'id')),
}
В Authors
:
public function relations()
{
return array(
'authors_category' => array(self::BELONGS_TO, 'Authors_Category', array('author_cat'=>'id')),
}
В Books
DataGridView
Я могу получить доступ Authors_Category
поля
$data->authors->authors_category->category_name
Но проблема в сортировке Authors_Category
colums
В Books
Модель у меня есть правило сортировки:
return new CActiveDataProvider(
new FraudAlerts(),
array(
'criteria'=>$criteria,
'sort'=>array(
'attributes'=>array(
'category_name'=>array(
'asc'=>'Authors_Category.category_name',
'desc'=>'Authors_Category.category_name DESC',
),
)
)
)
);
Когда я пытаюсь сортировать по Authors_Category
Я получаю сообщение об ошибке, что col category_name не существует.
Что не так в моих отношениях в Books
модель?
Как отметил Ятин Мистри, вы должны нетерпеливый груз authors_category
чтобы это работало.
Yii позволяет загружать вложенные отношения, используя with
так что это можно сделать следующим образом:
$criteria->with = array(
'authors.authors_category' => array('select' => array('category_name', 'id'))
);
select
ограничивает поля, загружаемые с помощью запроса, для повышения производительности. Если вы хотите загрузить все поля из Authors_Category
просто удали это.
Других решений пока нет …