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

如何获取CodeIgniter 4查询的筛选后记录总数?

如何获取CodeIgniter 4查询的筛选后记录总数?

嘿,我看你当前的代码里有个小问题——你用$model->countAllResults()是拿不到正确的筛选后记录数的,一方面是调用顺序的问题,另一方面这个方式没和你之前给builder加的筛选条件正确关联上。

给你两种可行的调整方案,你可以根据习惯选:

  • 方案一:用Query Builder统一操作
$model = new LocationModel();
$builder = $model->builder();

if($filterName != "" && $filterValue != "") {
    $builder->where($filterName, $filterValue);
}

// 先获取筛选后的记录总数
$data['recordCount'] = $builder->countAllResults();
// 再获取符合条件的列表数据
$data['locations'] = $builder->get()->getResult();
  • 方案二:直接通过Model操作,更简洁
$model = new LocationModel();

if($filterName != "" && $filterValue != "") {
    $model->where($filterName, $filterValue);
}

// 传false是告诉框架不要重置查询条件,这样后面的findAll()能复用同一筛选
$data['recordCount'] = $model->countAllResults(false);
// 获取筛选后的列表数据
$data['locations'] = $model->findAll();

这里要划个重点:countAllResults()默认执行后会重置当前的查询条件,如果你要在统计总数后继续用同一个筛选条件查询列表,一定要给它传false参数,这样就不会丢失之前加的where条件啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:55:28