Laravel的关系,和祖父母一样的父母:良好的做法与否?

时间:2017-06-30 20:51:21

标签: php database laravel database-design eloquent

因为您可以使用Laravel框架轻松定义关系。我想知道nation_id表中有athletes是否合适。

nations as parent and grantparent of athletes

我在Laravel中建立了以下关系:

国家模式:

public function athletes() {
    return $this->hasMany(Athlete::class, 'id', 'nation_id');
}

分会模特:

public function nation() {
    return $this->belongsTo(Nation::class, 'nation_id', 'id');
}
public function athletes() {
    return $this->hasMany(Athlete::class, 'id', 'club_id');
}

运动员模型:

public function nation() {
    return $this->belongsTo(Nation::class, 'nation_id', 'id');
}
public function club() {
    return $this->belongsTo(Club::class, 'club_id', 'id');
}

既然你可以做到这一点来获得一个运动员的国家:Athlete::where('id', $id)->first()->club->nation,我想知道在那里拥有一个国家职能是否是一个好习惯。

1 个答案:

答案 0 :(得分:1)

您可以使用hasManyThrough模型上的Nation访问Athlete,而无需在两者之间建立直接关系。

所以在你的 Nation 模型上:

public function clubs()
{
    return $this->hasMany(Club::class);
}

public function athletes()
{
    return $this->hasManyThrough(Athlete::class, Club::class);
}