Cakephp 2.5从未设置的数组操作中减去计数

时间:2016-05-10 19:18:24

标签: cakephp

我正在使用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无法查看是否存在包含结果计数信息的属性。

1 个答案:

答案 0 :(得分:1)

不要对sql调用的结果进行后处理。

如果你对sql调用的结果进行后期处理,除非结果适合一页,否则计数总是不准确 - 因为你要从当前页面中删除结果,而其他结果你< em>将删除仍然存在于其他页面中 - 影响计数。

让paginate返回你想要的

相反,只需让数据库为您提供您想要的结果,而不是您没有:

$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');