Я работал с опциями разбивки на страницы cakephp в течение 2 дней. Мне нужно сделать INNER Joins, чтобы перечислить несколько полей, но мне нужно заниматься поиском, чтобы фильтровать результаты.
Это часть кода, в которой я имею дело с параметрами поиска по $ this-> passArgs
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-> разбиение на страницы игнорирует каждое $ this-> paginate ['conditions'] [] от $ this-> passArgs
, и я не знаю, как я могу это решить.
Никаких запросов при отладке, только исходный 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']
, поскольку ты можешь видеть
array $ this-> passArgs
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'] []
.