CakePHP Пагинация с HABTM отношениями - PullRequest
0 голосов
/ 12 августа 2011

У меня есть отношения 'Club' HABTM 'Member'.

Из представления ClubsController :: View ($ id).Я хочу показать ВСЕХ Членов, которые принадлежат этому ОДНОМУ Клубу, в разбивке на страницы.Я перепробовал много вещей, но все было не совсем то, что я искал.Наиболее распространенное, казалось бы, связанное решение выглядело как CakePHP multi-HABTM ассоциации с нумерацией страниц , но это дало бы мне ВСЕ «Клуб», принадлежащий ОДНОМУ «Члену» из ClubsController.В отношении ВСЕХ «Член» из ОДНОГО «Клуба» от ClubsController.Я чувствую, что это должно быть очевидной задачей.

Ответы [ 2 ]

2 голосов
/ 01 марта 2013

Я отвечаю, потому что я не могу комментировать ответ Meibooms. Это неправильно, потому что не должно быть поля Member.club_id как его отношения HABTM . Вместо этого у вас должна быть таблица соединений: ClubsMembers.club_id ClubsMembers.member_id

Как объяснено в ответе на связанный вопрос, который вы упомянули, вам нужно связать поддельное отношение hasOne, чтобы иметь возможность установить необходимые условия.

В вашем конкретном случае:

        $this->Club->Member->bindModel(array(
            'hasOne' => array('ClubsMember')
        ), false);

        // Set up the paginate options array
        $this->paginate['Member'] = array(
            'contain' => array(
                'ClubsMember',
            ),
            'conditions' => array(
                'ClubsMember.club_id' => $club_id,
            ),
            //Group since the HasOne may return multiple rows for each
            //(if $club_id is an array of IDs and a Member is in more than one of those).
            'group' => 'Member.id',
            'order' => 'Member.name',
        );

        $this->set('members', $this->paginate('Member'));

Игнорировать часть contain, если вы не используете ContainableBehavior. (Торт все равно проигнорирует.)

0 голосов
/ 06 сентября 2011

Это звучит как простое разбиение на страницы Member с условиями 'Member.club_id' => $ id должно помочь вам.

ps.Какую версию CakePHP вы используете?Более новые версии немного сложнее с нумерацией страниц.

...