使用hasMany查询后分页不正确

新手提问 · melody · 于 6年前 发布 · 4660 次阅读
    public function getNodes(){
        return $this->hasMany(PostNodes::className(), ['post_id'=>'id']);
    }

search:

        $query = Post::find();
        $query->joinWith('nodes');
        
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'defaultPageSize' => 20,
            ],
            'sort' => [
                'defaultOrder' => [
                    'id' => SORT_DESC,
                ]
            ],
        ]);

使用hasMany关联查询后,记录总数是子表(PostNodes)的,导致分页不正确。现在已知使用groupBy对id进行分组可以解决这个问题,但是group在数据量大了以后查询太慢了。求个比较好的解决办法。

共收到 1 条回复
forecho#16年前 0 个赞

不知道你的需求是什么?

我猜测你需要使用 with() 而不是 joinWith(),至于两个的区别你可以看这篇文章 Yii2 with 和 joinWith 的区别

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册