我有'俱乐部'HABTM'会员'关系。
从ClubsController :: View($ id)视图。我希望在分页表中显示属于该ONE俱乐部的所有会员。我尝试过很多东西,但都不是我想要的。最常见,看似相关的解决方案看起来像CakePHP multi-HABTM associations with pagination但这会给我所有来自ClubsController的属于''会员'的'俱乐部'。与来自ClubsController的ONE'Club'的所有'会员'相同。我觉得这应该是一项显而易见的任务。
答案 0 :(得分:2)
我回答是因为我无法评论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
部分。 (无论如何,蛋糕会忽略它。)
答案 1 :(得分:0)
听起来像会员的简单分页,条件为'Member.club_id'=> $ id应该为你做到这一点。
PS。您使用的是哪个版本的CakePHP?较新的版本更加复杂,分页为afaik。