使用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部分。(蛋糕将忽略它。)最新版本,是的。我明天早上试试看。谢谢