Cakephp $ this-> paginate с настраиваемыми параметрами JOIN и фильтрацией

Я работал с опциями разбивки на страницы 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'] [] .

10
задан C Travel 15 September 2014 в 11:32
поделиться