我有以下数据库表:
四季
队
统计
问题是,如何通过积分榜让我们在一个赛季中获得所有球队。目前,我正以这种方式获得所有团队:
$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');
}
}
答案 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