我正在使用CakePHp 2.5,需要从查询中删除一些结果:
$this->paginate = $paginate;
$results = $this->paginate('services');
foreach($results as $key=>$data )
{
if( empty( $dado['services']['service_id'] ) )
{
unset($results[$key]);
}
结果计数将保留原始计数。
当我取消设置查询结果时,有没有办法减去分页查询计数?
查看Paginator class无法查看是否存在包含结果计数信息的属性。
答案 0 :(得分:1)
不要对sql调用的结果进行后处理。
如果你对sql调用的结果进行后期处理,除非结果适合一页,否则计数总是不准确 - 因为你要从当前页面中删除结果,而其他结果你< em>将删除仍然存在于其他页面中 - 影响计数。
相反,只需让数据库为您提供您想要的结果,而不是您没有:
$this->paginate['conditions'] = ['service_id IS NOT NULL'];
$results = $this->paginate('services');
如果服务ID可以为null或0,则可以使用大于比较来计算:
$this->paginate['conditions'] = ['service_id >' => 0];
$results = $this->paginate('services');