現在のスキーマでは、アルバムに基づいてアーティストの役割にタグを付けることはできません。
テーブルには、artist_role
のエントリを定義する関係がないため 表は特定のアルバム用です。したがって、私が提案するのは、 role_id
を含む中間テーブルを作成することです。 、 artist_id
およびalbum_id
。
この中間テーブルをlaravelのmanyToMany
で使用するには 関係では、1つの属性をピボット属性として指定してモデルのメソッドを定義できます。
たとえば、 アーティストモデル :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
他のモデルにも同様の方法を定義します。
更新:
Artist
を取得するため アルバムでの役割とともに、Album
に次のメソッドを追加します モデル:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
ロールの場合、次の方法を追加します:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}