Laravel-内部小组

时间:2019-02-05 15:04:16

标签: mysql laravel eloquent

我有一张桌子,上面有球员之间的比赛,有以下字段:

ID | player1_id | player2_id | scoreP1 |得分P2 |阶段

1 |虚拟1 |虚拟2 | 2 | 3 |第16回合

2 | random2 | test1 | 2 | 1 |第16回合

3 |虚拟2 |虚拟1 | 1 | 1 |第16回合

4 | test1 | random2 | 2 | 3 |第16回合

5 | random2 |虚拟2 | 1 | 1 |回合8

6 |虚拟2 | random2 | 1 | 3 |回合8

现在阶段的值是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]

}

}

0 个答案:

没有答案