在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
fiels排序时,我收到错误,col category_name不存在。
Books
模型中我的关系有什么问题?
答案 0 :(得分:2)
正如Yatin Mistry指出的那样,你必须eager load authors_category
才能发挥作用。
Yii允许您使用with
加载嵌套关系,因此可以按如下方式完成:
$criteria->with = array(
'authors.authors_category' => array('select' => array('category_name', 'id'))
);
select
限制通过查询加载的字段以提高性能。如果您希望加载Authors_Category
中的所有字段,只需将其删除即可。