cakephp habtm加入问题

时间:2011-04-06 14:13:13

标签: cakephp join has-and-belongs-to-many records

我有如下表结构:

events (boxing, sparring etc)
competitors (users who are participating into diff events)
events_competitors (every competitor's selected events will go here)

现在我想要的是,根据我的匹配时间表,我想从competitors表中找到schedules,其中每个competitors将与{匹配}他们在注册时选择了{1}}。

我正在使用这样的查找查询:

events

在这里,我使用了加入,因为我无法找到$matchdivisions = $this->Competitor->find("all" , array( 'conditions' => array('Competitor.status' => 1, 'Competitor.payment_completed' => 1, 'Competitor.weightgroup_id' => $current_matchsc['Matchschedule']['weightgroup_id'], 'Competitor.rank_id' => $current_matchsc['Matchschedule']['rank_id'], 'Competitor.degree_id' => $current_matchsc['Matchschedule']['degree_id'], 'Competitor.gender' => $current_matchsc['Matchschedule']['gender'], ), 'joins' => array( array('table' => 'event_competitors', 'alias' => 'EventCompetitor', 'type' => 'left', 'conditions'=> array('EventCompetitor.event_id = '.$current_matchsc['Event']['id']), ) ) ) ); EventCompetitorCompetitors匹配的关系。

问题:单个匹配记录有10次,因为Events,而它应该只有一次。

最早的回复将不胜感激。

提前致谢!

一旦这对我有用,现在是下一个级别:

我有两个级别的条件检查,join我希望看到,如果他们想与EventsCompetitors腰带打架,或者他们是未成年人,他们想与{{{{ 1}}所以在这种情况下,我希望看到这两个标志,并在此基础上再次改变我的条件,并为我的附加显示器显示新的结果。

请告诉我,如果有人有人对CakePHP这类东西有所了解。

再次感谢 stackoverflow 提供优质服务!

1 个答案:

答案 0 :(得分:0)

如果您只对单个记录感兴趣并且始终确保其他记录是重复的,那么您可以使用find('first',...)代替。

如果您对多个不同的记录感兴趣,但是您获得了每个记录的倍数,您可以在'group' => array('')中添加以汇总特定字段上的竞争对手,只返回一次?