У меня есть таблица с матчами между игроками, с полями:
ID |player1_id |player2_id |ScoreP1 |оценка P2 |этап
1 |dummy1 |dummy2 |2 |3 |РАУНД16
2 |random2 |test1 |2 |1 |ROUND16
3 |dummy2 |dummy1 |1 |1 |ROUND16
4 |test1 |random2 |2 |3 |Раунд16 * 1011 *
5 |random2 |dummy2 |1 |1 |РАУНД8
6 |dummy2 |random2 |1 |3 |ROUND8
Теперь значения для этапов: ROUND16, ROUND8, ROUND4, ROUND2, FINAL.Эти значения представляют этапы турнира.Теперь я группирую матчи в группы для каждого этапа.Каждый матч между игроками происходит дважды, один раз игрок «дома», а другой раз «в гостях».Например, игрок Dummy однажды будет находиться под player1_id, а другой - под player2_id.
Вот как я группирую совпадения по группам этапов.
$matches=Match::where('stage','ROUND_OF_16')->get();
$stages = $matches->mapToGroups(function ($item, $key) {
return [$item['stage'] => $item];
});
Теперь я хочу сгруппировать их.два матча вместе в группе ROUND16.Таким образом, я бы получил группы для раундов и внутри групп с парными матчами.Проблема в том, что игрок один раз находится под player1_id, а другой - player2_id, поэтому я не могу понять, как сгруппировать эти два матча вместе.
И конечный результат:
ROUND16 {
[0] {
[id: 1, player1_id: dummy1, player2_id: dummy2]
[id: 3, player1_id: dummy2, player2_id: dummy1]
}
[1] {
[id: 2, player1_id: random2, player2_id: test1]
[id: 4, player1_id: test1, player2_id: random2]
}
}
ROUND8 {
[0] {
[id: 5, player1_id: random2, player2_id: dummy2]
[id: 6, player1_id: dummy2, player2_id: random2]
}
}