Я работаю с параметрами paginations cakephp в течение 2 дней. Мне нужно сделать INNER Joins для перечисления нескольких полей, но мне приходится иметь дело с поиском для фильтрации результатов.
Это часть кода, в которой я имею дело с параметрами поиска $this->passedArgs
function crediti() {
if(isset($this->passedArgs['Search.cognome'])) {
debug($this->passedArgs);
$this->paginate['conditions'][]['Member.cognome LIKE'] = str_replace('*','%',$this->passedArgs['Search.cognome']);
}
if(isset($this->passedArgs['Search.nome'])) {
$this->paginate['conditions'][]['Member.nome LIKE'] = str_replace('*','%',$this->passedArgs['Search.nome']);
}
и после
$this->paginate = array(
'joins' => array(array('table'=> 'reservations',
'type' => 'INNER',
'alias' => 'Reservation',
'conditions' => array('Reservation.member_id = Member.id','Member.totcrediti > 0' ))),
'limit' => 10);
$this->Member->recursive = -1;
$this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
$this->paginate['fields'] = array('DISTINCT Member.id','Member.nome','Member.cognome','Member.totcrediti');
$members = $this->paginate('Member');
$this->set(compact('members'));
INNER JOIN работает хорошо, но $this- > paginations игнорируют каждый $this->paginate['conditions'][] by $this->passedArgs
, и я не могу представить, как я могу это исправить.
В отладочном запросе нет запроса, только оригинал INNER JOIN
.
Может кто-то мне помогает?
Большое спасибо
Обновление: Не повезло. Я занимаюсь этой частью кода в течение многих часов. Если я использую
if(isset($this->passedArgs['Search.cognome'])) {
$this->paginate['conditions'][]['Member.cognome LIKE'] = str_replace('*','%',$this->passedArgs['Search.cognome']);
}
$this->paginate['conditions'][]['Member.sospeso'] = 'SI';
$this->Member->recursive = 0;
$this->paginate['fields'] = array(
'Member.id','Member.nome','Member.cognome','Member.codice_fiscale','Member.sesso','Member.region_id',
'Member.district_id','Member.city_id','Member.date','Member.sospeso','Region.name','District.name','City.name');
$sospesi = $this->paginate('Member');
все идет хорошо, и из отладки я получаю первое условие и условия от $this->paginate['conditions'][]['Member.cognome LIKE']
, как вы можете видеть
массив $this->passedArgs
Array
(
[Search.cognome] => aiello
)
Array $this->paginate['conditions'][]
(
[0] => Array
(
[Member.cognome LIKE] => aiello
)
[1] => Array
(
[Member.sospeso] => NO
)
Но если я напишу объединения с помощью paginate, $this->paginate['conditions'][]
будет игнорировать все вещи и дать мне отладки, просто $this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
Еще немного информации.
Если я поставлю все, что связано с $this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
перед $this->paginate JOIN
ничего не будет в $this->paginate['conditions'][]
.