使用查询字符串的不同分页条件[CakePHP 3]

使用查询字符串的不同分页条件[CakePHP 3],php,url,cakephp,cakephp-3.0,Php,Url,Cakephp,Cakephp 3.0,用户必须在URL中传递一个查询字符串,该字符串将返回不同的分页,如果他输入了无、一个或两个查询,则结果将更改。下面的代码是用CakePHP编写的,但是看起来很可怕,没有那些if,else-if条件,有没有更好的方法来实现我想要做的事情 if($this->request->query('date')) { $this->paginate = [ 'conditions' => [ 'Reservations.id_ven

用户必须在URL中传递一个查询字符串,该字符串将返回不同的分页,如果他输入了无、一个或两个查询,则结果将更改。下面的代码是用CakePHP编写的,但是看起来很可怕,没有那些if,else-if条件,有没有更好的方法来实现我想要做的事情

if($this->request->query('date')) 
{ 
    $this->paginate = [ 
        'conditions' => [ 
          'Reservations.id_venue' => $this->Auth->user('id_venue_manager'), 
          'Reservations.date' => $this->request->query('date'), 
        ], 
    ]; 
} 
else if($this->request->query('id_user')) 
{ 
    $this->paginate = [ 
       'conditions' => [ 
          'Reservations.id_venue' => $this->Auth->user('id_venue_manager'), 
          'Reservations.id_user' => $this->request->query('id_user'), 
        ], 
    ]; 
} 
else if($this->request->query('id_user') && $this->request->query('date')) 
{ 
    $this->paginate = [ 
       'conditions' => [ 
          'Reservations.id_venue' => $this->Auth->user('id_venue_manager'), 
          'Reservations.id_user' => $this->request->query('id_user'), 
          'Reservations.date' => $this->request->query('date'), 
       ], 
    ]; 
} 
else 
{ 
    $this->paginate = [ 
       'conditions' => [ 
          'Reservations.id_venue' => $this->Auth->user('id_venue_manager'), 
       ], 
   ]; 
}
试试这个

<?php

public function someMethod() {
     $this->paginate = [ 
       'conditions' => $this->getPaginationConditions();
    ]; 
}

private function getPaginationConditions()
{
    $conditions = ['Reservations.id_venue' => $this->Auth->user('id_venue_manager')];  

    if ($date = $this->request->query('date')) {
        $conditions['Reservations.date'] = $date;
    }

    if ($user = $this->request->query('id_user')) {
        $conditions['Reservations.id_user'] = $user;
    }

    return $conditions;
}

我会改用这个插件:)