Laravel雄辩的关系通过另一张桌子

时间:2015-05-18 19:39:45

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

我有以下数据库表:

四季

  • ID

  • ID
  • 名称

统计

  • ID
  • season_id
  • TEAM_ID

问题是,如何通过积分榜让我们在一个赛季中获得所有球队。目前,我正以这种方式获得所有团队:

$teams = [];

$standings = $season->standings;

foreach($standings as $standing){

     $teams[] = $standing->team;

}

有没有办法可以使用雄辩的关系来做到这一点?我试过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');

    }

}

1 个答案:

答案 0 :(得分:3)

你的人际关系看起来有些偏差。以下是您应该需要的所有关系,但是在这个特定场景中只需要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; } 来查询一个赛季中的所有球队。这看起来像......

ItemsSource