Nel tuo schema attuale, non sarai in grado di taggare il ruolo dell'artista in base all'album.
Dato che non c'è alcuna relazione nelle tue tabelle per definire che la voce in artist_role
la tabella è per l'album specifico. Quindi, quello che suggerirei è di creare una tabella intermedia contenente il role_id
,artist_id
e album_id
.
Per utilizzare questa tabella intermedia con manyToMany
di laravel relazione, puoi definire i metodi nei tuoi modelli specificando un attributo come attributo pivot.
Per, ad es. in Artista Modello :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Definisci metodi simili anche per altri Modelli.
Aggiornamento:
Per ottenere Artist
con il suo ruolo in Album aggiungi il seguente metodo nell'Album
modello:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Per i ruoli aggiungi il seguente metodo:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}