arrays - 从数据库中获取额外的数据到数组中
问题描述
我有包含团队信息和计算积分的排名数组。但我也需要得到每支球队的进球数。需要帮助如何将其提取到当前数组。
这是我的 LeaguesController:
public function standings(League $league, Team $team)
{
$standings = [
];
$matches = Match::where('league_id', '=', $league->id)->get();
foreach($matches as $match) {
$homeTeamScore = $match->score->home_team_score;
$awayTeamScore = $match->score->away_team_score;
if ($homeTeamScore === $awayTeamScore) {
if (isset($standings[$match->homeTeam->name])) {
$standings[$match->homeTeam->name] += 1;
} else {
$standings[$match->homeTeam->name] = 1;
}
if (isset($standings[$match->awayTeam->name])) {
$standings[$match->awayTeam->name] += 1;
} else {
$standings[$match->awayTeam->name] = 1;
}
}
if ($homeTeamScore > $awayTeamScore) {
if (isset($standings[$match->homeTeam->name])) {
$standings[$match->homeTeam->name] += 3;
} else {
$standings[$match->homeTeam->name] = 3;
}
if (!isset($standings[$match->awayTeam->name])) {
$standings[$match->awayTeam->name] = 0;
}
}
if ($homeTeamScore < $awayTeamScore) {
if (isset($standings[$match->awayTeam->name])) {
$standings[$match->awayTeam->name] += 3;
} else {
$standings[$match->awayTeam->name] = 3;
}
if (!isset($standings[$match->homeTeam->name])) {
$standings[$match->homeTeam->name] = 0;
}
}
}
return view('admin.leagues.standings')->with('standings',$standings);
}
和我拥有的数组:
array:2 [▼
"secondTeam" => 3
"firstTeam" => 0
]
我想做这样的事情:
array:3 [▼
"firstTeam" => array:6 [▼
"points" => 10
"scoredGoals" => 15
"goalsConceded" => 20
"wins" => 20
"loses" => 20
"draws" => 20
]
"secondTeam" => array:6 [▼
"points" => 10
"scoredGoals" => 15
"goalsConceded" => 20
"wins" => 20
"loses" => 20
"draws" => 20
]
"ThirdTeam" => array:6 [▼
"points" => 10
"scoredGoals" => 15
"goalsConceded" => 20
"wins" => 20
"loses" => 20
"draws" => 20
]
]
如何获取数据到数组
解决方案
你可以试试这样的。您必须为您想要的所有这些额外字段添加:
public function standings(League $league, Team $team)
{
$standings = [];
$blank = [
'points' => 0,
'scoredGoals' => 0,
'goalsConceded' => 0,
'wins' => 0,
'loses' => 0,
'draws' => 0,
];
$matches = Match::with('score', 'homeTeam', 'awayTeam')
where('league_id', '=', $league->id)->get();
foreach ($matches as $match) {
$homeTeamScore = $match->score->home_team_score;
$awayTeamScore = $match->score->away_team_score;
$standings[$match->homeTeam->name] ??= $blank;
$standings[$match->awayTeam->name] ??= $blank;
$home = &$standings[$match->homeTeam->name];
$away = &$standings[$match->awayTeam->name];
$away['scoredGoals'] += $awayTeamScore;
$home['scoredGoals'] += $homeTeamScore;
$away['goalsConceded'] += $homeTeamScore;
$home['goalsConceded'] += $awayTeamScore;
switch ($homeTeamScore <=> $awayTeamScore) {
case -1:
// home lost
// swap home and away and let it fall through
$tmpHome = &$home;
$home = &$away;
$away = &$tmpHome;
case 1:
// home won
$home['points'] += 3;
$home['wins']++;
$away['loses']++;
break;
default:
// draw
$home['points']++;
$away['points']++;
$home['draws']++;
$away['draws']++;
}
}
return view('admin.leagues.standings')->with('standings',$standings);
}
推荐阅读
- pine-script - 多个条件的交易视图 Pine 脚本
- vim - 我在哪里可以从 gVim 获得白色配色方案?
- c# - 列表只能在MVC中存储一项?
- intel-oneapi - 找不到迁移的 dpcpp 输出文件,并且 dpct 响应为“不需要迁移”
- python - FourSquare API 可以提供历史数据吗?
- flutter - 如何在 Flutter 中使用 TabBar 中的 overlayColor?
- python - 通过 perf_analyzer 使用真实图像数据 - Triton Inference Server
- payment - 如何在订阅中注册过期的信用卡以在 authorize.net 中进行测试?
- php - 在 php 代码中显示文件夹中的特定图像文件(图像应显示用户在数量字段中指定的次数)
- vba - Microsoft Publisher VBA - 此代码中是否有任何内容可以防止多页删除?