【问题标题】:Laravel Eloquent Relationship Through Another TableLaravel 雄辩的关系通过另一个表
【发布时间】:2015-07-30 10:46:51
【问题描述】:

我有以下数据库表:

季节

  • 身份证
  • 号码

团队

  • 身份证
  • 姓名

排名

  • 身份证
  • season_id
  • team_id

问题是,我怎样才能让一个赛季的所有球队都进入积分榜。目前,我正在以这种方式让所有团队:

$teams = [];

$standings = $season->standings;

foreach($standings as $standing){

     $teams[] = $standing->team;

}

有没有办法使用 Eloquent 关系来做到这一点?我试过 HasManyThrough 没有成功。这些是我的模型目前的样子:

class Season extends Eloquent{

    public function standings(){

        return $this->hasMany('Standing');

    }

}

class Standing extends Eloquent{

    public function team(){

        return $this->belongsTo('Team');

    }

}

class Team extends Eloquent{

    public function standings(){

        return $this->belongsToMany('Standing');

    }

}

【问题讨论】:

    标签: laravel laravel-4 orm eloquent laravel-5


    【解决方案1】:

    你们的关系看起来有点不对劲。以下是您应该需要的所有关系,尽管对于在一个赛季中查找所有球队的特定场景只需要 belongsToMany 关系。

    class Season extends Eloquent {
    
        public function teams()
        {
            return $this->belongsToMany('Team', 'Standings');
        }
    
        public function standings()
        {
            return $this->hasMany('Standing');
        }
    }
    
    class Team extends Eloquent {
    
        public function seasons()
        {
            return $this->belongsToMany('Season', 'Standings');
        }
    
        public function standings()
        {
            return $this->hasMany('Standing');
        }
    }
    
    class Standing extends Eloquent {
    
        public function team()
        {
            return $this->belongsTo('Team');
        }
    
        public function season()
        {
            return $this->belongsTo('Season');
        }
    }
    

    您将使用belongsToMany 关系而不是hasManyThrough 来查询一个赛季中的所有球队。这看起来像......

    Season::with('teams')->find($season_id);
    
    foreach($season->teams as $team) {
        echo $team->name;
    }
    

    【讨论】:

    • @user3158900 你能说这个例子是否也适用于这种情况?如果我有一个属于ToMany Columns 的campaingn 和columns hasMany Values and Values belongsToMany Campaingns
    • 我不这么认为,但如果没有看到架构,我无法确定。如果您使用您的架构创建一个新问题,我会很乐意查看。
    • @user3158900 我的问题在这里 stackoverflow.com/q/30371161/219626
    • @user3158900 你介意看看这里的类似问题吗?提前致谢:stackoverflow.com/questions/30687503/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2017-10-17
    • 2015-03-14
    相关资源
    最近更新 更多