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');
}