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

火山引擎 最新活动