I dit nuværende skema vil du ikke være i stand til at tagge kunstnerens rolle på basis af album.
Der er ingen relation i dine tabeller til at definere, at posten i artist_role
tabellen er til et bestemt album. Så det, jeg vil foreslå, er at oprette en mellemtabel, der indeholder role_id
,artist_id
og album_id
.
For at bruge denne mellemtabel med laravels manyToMany
forhold, kan du definere metoderne i dine modeller ved at angive én egenskab som pivotattribut.
For f.eks. i Kunstnermodel :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Definer også lignende metoder for andre modeller..
Opdatering:
For at få Artist
med sin rolle i Album tilføje følgende metode i Album
model:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
For roller tilføj følgende metode:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}