从数据库中获取其他数据到数组中 [英] fetch additional data in to array from database

查看:51
本文介绍了从数据库中获取其他数据到数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有积分榜,其中包含球队信息和计算得出的积分.但是我也需要获得每个团队的进球数.需要帮助如何将其提取到当前数组.

i have standings array with team info and calculated points. But also i need to get goals count of each team. Need help how to fetch it to current array.

这是我的LeaguesController:

This is my 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
  ]
]

如何获取数据到数组

推荐答案

您可以尝试类似的方法.您必须为想要的所有这些额外字段添加:

You could try something like this. You have to be adding for all these extra fields you want:

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);
}

这篇关于从数据库中获取其他数据到数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆