CodeIgniter4 Query Builder调用getRowArray()仅返回单行问题
解决CodeIgniter4 Active Record获取多行分组结果的问题
你的问题出在**getRowArray()方法上,这个方法只会返回查询结果的第一行数据**,而你需要的是所有分组后的多行结果,所以得换成返回多行的方法。另外,groupBy()的用法也有误,它的第二个参数不是排序方向,排序需要单独用orderBy()。
修正后的代码
public function countall() { $this->prestasi->selectCount('*', 'cat_total'); $this->prestasi->select("db_pem"); $this->prestasi->groupBy('db_pem'); $this->prestasi->orderBy('db_pem', 'ASC'); // 单独添加排序逻辑 return $this->prestasi->get()->getResultArray(); // 换成获取多行的方法 }
关键改动说明
getResultArray():替代getRowArray(),会返回所有符合条件的分组结果,格式为二维数组,每个子数组对应一个分组的数据。- 修正
groupBy():CI4的groupBy()仅接受分组字段作为参数,排序逻辑需要通过orderBy()单独设置,这样才能正确按db_pem升序排列结果。
预期返回结果
修改后你会得到类似这样的二维数组:
array( array( "cat_total" => "2", "db_pem" => "1" ), array( "cat_total" => "3", "db_pem" => "2" ), // 其他分组数据... )
内容的提问来源于stack exchange,提问作者fajarra
相关产品推荐
相关产品推荐

