Kartik 的 GridView 中显示的数据与行数不一致 - Yii2
Inconsistency between data displayed in Kartik's GridView and rows count - Yii2
在我的 GridView 中,返回的行数与右上角显示的不一样。在角落里,网格有 7450 行,但实际上它有 returns 4351 行。
下面是一个错误行为的例子:Screenshot In the example the Gridview renders 1 row (it is correct) but the summary in the corner says "Showing 1-1 of 4 items).
I have probably found what is causing the error by reading this post: 。此错误还会导致分页被破坏。
不幸的是,该解决方案未能解决我的问题。或者我可能遗漏了什么。
我的情况
我需要在 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');
...
}
完全解决了问题。
在我的 GridView 中,返回的行数与右上角显示的不一样。在角落里,网格有 7450 行,但实际上它有 returns 4351 行。
下面是一个错误行为的例子:Screenshot In the example the Gridview renders 1 row (it is correct) but the summary in the corner says "Showing 1-1 of 4 items).
I have probably found what is causing the error by reading this post:
不幸的是,该解决方案未能解决我的问题。或者我可能遗漏了什么。
我的情况
我需要在 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');
...
}
完全解决了问题。