如何获取每个团队的结果 laravel

Posted

技术标签:

【中文标题】如何获取每个团队的结果 laravel【英文标题】:How to get results of each team laravel 【发布时间】:2021-03-20 21:07:28 【问题描述】:

我需要为每个联赛创建积分榜。关系:

团队模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Team extends Model

    protected $fillable = ['name', 'league_id', 'stadium'];

    public function league() 
        return $this->belongsTo('App\League');
    

    public function players() 
        return $this->hasMany('App\Player');
    

    public function matches() 
        return $this->hasMany('App\Match');
    
    

匹配模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Team;

class Match extends Model

    protected $fillable = ['round', 'match_date'];
    protected $guarded = ['league_id', 'home_team_id', 'away_team_id'];  

    public function leagues() 
        return $this->belongsTo('App\League');
    

    public function homeTeam() 
        return $this->belongsTo('App\Team', 'home_team_id');
    

    public function awayTeam() 
        return $this->belongsTo('App\Team', 'away_team_id');
    

    public function score()
    
        return $this->hasOne('App\Score', 'match_id');
    

在获取所有联赛球队时创建积分榜功能。 排名应该有比赛,胜利,平局,失败。有人可以帮忙,如何获取这些数据?

 public function standings(League $league, Team $team) 
        $teams = Team::with('league')->where('league_id', $league->id)->get();
       
        //dd($team_matches);
        return view('admin.leagues.standings')->with('teams',$teams);
    

【问题讨论】:

您如何评价胜负?这些数据是存储在匹配表还是其他地方? 比赛与分数有关系(match_id, home_team_score, away_team_score) 【参考方案1】:

获取所有数据的一种方法是

 public function standings(League $league, Team $team) 
    $teams = Team::where('league_id', $league->id)
        ->with([
            'league.matches.score' 
        ])
        ->get();
       
    //dd($team_matches);
    return view('admin.leagues.standings')->with('teams',$teams);

然后在视图中进行渲染时,您可以根据得分计算输赢。

【讨论】:

得到这个错误,smth 错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'matches.team_id' in 'where clause' (SQL: select * from matches where matches .team_id in (1)) matches 表上的外键是什么,它在 teams 表中引用了哪一列?您已经在 Team 模型上定义了 matches 关系 - 您使用哪些列来连接两者 比赛有(league_Id、home_team_id 和 away_team_id) 那么你是如何将匹配定义为 Team 模型与 hasMany 关系的关系?无论如何,您可以通过联赛访问比赛。查看更新的答案。 谢谢。但是如何显示每支球队的所有比赛呢?您是否有一些资源可以让我了解控制器中的这些条件或类似的东西。谢谢。

以上是关于如何获取每个团队的结果 laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel 中的 hasMany() 关系中获取所有结果?

如何在 Laravel 中将连接结果作为对象数组获取?

如何获取laravel中每个用户ID的最新行?

如何从每个父模型中获取 N 条记录?在 laravel 中雄辩

如何从本地存储中获取每个用户在 laravel 6 中登录的数据?

我如何获得 Laravel 与其关系值的关系?