Laravel - внутренняя группа по коллекции - PullRequest
0 голосов
/ 05 февраля 2019

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

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]

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...