Я работаю с вариантами разбивки тортов в течение 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-> pagination игнорирует каждый $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'][]
.