Dans votre schéma actuel, vous ne pourrez pas taguer le rôle de l'artiste en fonction de l'album.
Comme il n'y a pas de relation dans vos tables pour définir que l'entrée dans artist_role
le tableau est pour un album spécifique. Donc, ce que je suggérerais est de créer une table intermédiaire contenant le role_id
,artist_id
et album_id
.
Pour utiliser cette table intermédiaire avec le manyToMany
de laravel relation, vous pouvez définir les méthodes dans vos modèles en spécifiant un attribut comme attribut pivot.
Pour, par ex. dans Modèle d'artiste :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Définissez également des méthodes similaires pour d'autres modèles.
Mise à jour :
Pour obtenir Artist
avec son rôle dans Album ajouter la méthode suivante dans l'Album
modèle :
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Pour les rôles, ajoutez la méthode suivante :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}