In Ihrem aktuellen Schema können Sie die Rolle des Künstlers nicht anhand des Albums markieren.
Da es in Ihren Tabellen keine Beziehung gibt, um den Eintrag in artist_role zu definieren Tabelle ist für ein bestimmtes Album. Ich würde also vorschlagen, eine Zwischentabelle zu erstellen, die die role_id enthält ,artist_id und album_id .
Um diese Zwischentabelle mit Laravels manyToMany zu verwenden Beziehung können Sie die Methoden in Ihren Modellen definieren, indem Sie ein Attribut als Pivot-Attribut angeben.
Für z.B. im Künstlermodell :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Definieren Sie ähnliche Methoden auch für andere Modelle..
Aktualisierung:
Um Artist zu bekommen mit seiner Rolle im Album fügen Sie folgende Methode im Album hinzu Modell:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Fügen Sie für Rollen folgende Methode hinzu:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}