使用HABTM关系的CakePHP分页

使用HABTM关系的CakePHP分页,cakephp,pagination,Cakephp,Pagination,我有“俱乐部”和“会员”的关系 从ClubsController::View($id)视图。我希望在分页表中显示属于该俱乐部的所有会员。我试过很多东西,但都不是我想要的。最常见的、看似相关的解决方案看起来是这样的,但这会给我所有属于ClubController中一个“成员”的“俱乐部”。由俱乐部控制者指定一个“俱乐部”中的所有“会员”。我觉得这应该是一项显而易见的任务。在我看来,这就像是一个简单的对会员的分页,条件是“会员。俱乐部id”=>$id应该可以帮你 另外,您使用的是什么版本的CakeP

我有“俱乐部”和“会员”的关系


从ClubsController::View($id)视图。我希望在分页表中显示属于该俱乐部的所有会员。我试过很多东西,但都不是我想要的。最常见的、看似相关的解决方案看起来是这样的,但这会给我所有属于ClubController中一个“成员”的“俱乐部”。由俱乐部控制者指定一个“俱乐部”中的所有“会员”。我觉得这应该是一项显而易见的任务。

在我看来,这就像是一个简单的对会员的分页,条件是“会员。俱乐部id”=>$id应该可以帮你


另外,您使用的是什么版本的CakePHP?较新的版本使用afaik分页更为复杂

我在回答,因为我不能对梅布姆的回答发表评论。 这是错误的,因为不应该有
会员.club\u id
字段作为其HABTM关系。 相反,您应该拥有一个联接表:
ClubsMembers.club\u id
ClubsMembers.member\u 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'));

如果不使用
ContainableBehavior
,请忽略
containable部分。(蛋糕将忽略它。)

最新版本,是的。我明天早上试试看。谢谢