php - Yii模型关系加入

标签 php mysql yii datagridview

  1. 表格书籍
  2. 表格作者
  3. 表 Authors_Category

Books模型中有关系:

    public function relations()
    {
        return array(
            'authors' => array(self::BELONGS_TO, 'Authors', array('author_id'=>'id')),
    }

作者中:

    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 列进行排序

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 模型中的关系有什么问题?

最佳答案

正如 Yatin Mistry 指出的,你必须 eager load authors_category 才能正常工作。

Yii 允许您使用 with 加载嵌套关系因此可以按如下方式完成:

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

select 限制通过查询加载的字段以提高性能。如果您希望加载 Authors_Category 中的所有字段,只需将其删除即可。

关于php - Yii模型关系加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29897374/

相关文章:

php - 如何使用数据库中相应id的选项值进行 GridView

javascript - Symfony 4 - 无法在 formBuilder 中自定义表单字段的 attr

php - Composer 设置安装错误

php - mysql连接表并接收一行

php - 如何从 Laravel 查询中获得相反的结果

php - 使用 php PDO 调用多个存储过程

MySQL 获取过去 24 小时内每小时的平均值

mysql - 如何将(?)表字段转置为mysql View 中的列标题?

javascript - 关于分页的 Yii CGridView javascript 事件

php - Yii 2.0 $request->post() 问题