Kartik 的 GridView 中显示的数据与行数不一致 - Yii2

问题描述

在我的 GridView 中,返回的行数与右上角显示的不同。在角落,网格计数 7450 行,但实际上它返回 4351 行。

这是错误行为的示例:Screenshot 在示例中,Gridview 呈现 1 行(这是正确的) 但角落里的摘要说“显示 4 个项目中的 1-1 个。

通过阅读这篇文章,我可能已经找到了导致错误的原因:{{3 }}。这个错误也会导致分页被破坏。
不幸的是,这个解决方案没有解决我的问题。或者我可能遗漏了一些东西。

我的情况
我需要在 Gridview 中显示关系数据,所以我在 AuthorsProjectPpi 模型中创建了这个关系:

public function getInstitutionName(){
    return $this->hasOne(AuthorsInstitution::className(),['md_institution_tokens'=>'ppi_organization']);
}

问题出现在AuthorsProjectPpiSearch模型的搜索功能中:

public function search($params)
{
    $query = AuthorsProjectPpi::find();
    $query->joinWith('institutionName');
    ...
}

那个 Join 产生了 7450 行(所以 Gridview 右上角的行数是 7450)但是 Gridview 只实例化了 4351 行(这是我想要的数字)。
如果我评论加入:

public function search($params)
{
    $query = AuthorsProjectPpi::find();
    //$query->joinWith('institutionName');
    ...
}

右上角显示正确的数字(4351),关系列也显示正确,但我无法按该列过滤结果。

我真的无法解决这个问题。
如果有帮助,我正在使用 Kartik 的 Gridview。

解决方法

已解决
我只是忘了将 GroupBy 放在查询中...

public function search($params)
{
    $query = AuthorsProjectPpi::find();
    $query->joinWith('institutionName')->groupBy('id');
    ...
}

这完全解决了问题。