You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:32:35