присоединиться - PullRequest
       29

присоединиться

0 голосов
/ 06 апреля 2011

У меня есть структура таблицы, как показано ниже:

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 будет соответствовать 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']),
                                                          ) 
                                                        )
                                )
);

Здесь я использовал объединения , потому что я не могу найти отношения из EventCompetitor, соответствующие Competitors и Events.

Проблема: одиночная совпадающая запись появляется 10 раз из-за join, в то время как она должна быть только однократной.

Самый ранний ответ приветствуется.

Заранее спасибо!

Теперь следующий уровень, как только это сработало для меня:

У меня есть два уровня проверки условий, в EventsCompetitors Я хочу посмотреть, хотят ли они сражаться с поясом black или они незначительны, и они хотят сражаться с adults, поэтому в этом В этом случае я хочу видеть эти оба флага и на этом основании, снова мои условия будут изменены, и новые результаты будут отображаться для моих дополнительных дисплеев.

Пожалуйста, дайте мне знать, если когда-нибудь у кого-нибудь появятся идеи по поводу такого рода вещей с CakePHP.

Еще раз большое спасибо stackoverflow за отличное обслуживание!

1 Ответ

0 голосов
/ 06 апреля 2011

Если вас интересует только одна запись и вы всегда уверены, что остальные являются дубликатами, вы можете вместо этого использовать find ('first', ...).

Если вас интересует несколько разныхзаписей, но вы получаете кратные каждой из этих записей, которые вы можете добавить в 'group' => array(''), чтобы объединить конкурентов в определенном поле и вернуть их только один раз?

...