我有一张桌子,上面有球员之间的比赛,有以下字段:
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]
}
}