Yii модель отношений присоединиться

  1. настольные книги
  2. Авторы таблицы
  3. таблица Authors_Category

В 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 модель?

0

Решение

Как отметил Ятин Мистри, вы должны нетерпеливый груз authors_category чтобы это работало.

Yii позволяет загружать вложенные отношения, используя with так что это можно сделать следующим образом:

$criteria->with = array(
'authors.authors_category' => array('select' => array('category_name', 'id'))
);

select ограничивает поля, загружаемые с помощью запроса, для повышения производительности. Если вы хотите загрузить все поля из Authors_Category просто удали это.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]