0

我有球员之间的比赛表,有字段:

身份证 | player1_id | player2_id | 得分P1 | 分数 P2 | 阶段

1 | 假人1 | 假人2 | 2 | 3 | 第16轮

2 | 随机2 | 测试1 | 2 | 1 | 第16轮

3 | 假人2 | 假人1 | 1 | 1 | 第16轮

4 | 测试1 | 随机2 | 2 | 3 | 第16轮

5 | 随机2 | 假人2 | 1 | 1 | 第8轮

6 | 假人2 | 随机2 | 1 | 3 | 第8轮

现在阶段的值是 ROUND16、ROUND8、ROUND4、ROUND2、FINAL。这些值代表锦标赛的阶段。现在,我将每个阶段的比赛分组。玩家之间的每场比赛发生两次,一次是“主场”,另一次是“客场”。例如,player 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 下,所以我不知道如何将这两个匹配组合在一起。

最终结果:

第16轮{

[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]

}

}

第8轮{

[0]{

[id:5,player1_id:random2,player2_id:dummy2]

[id:6,player1_id:dummy2,player2_id:random2]

}

}

4

0 回答 0