Във вашата текуща схема няма да можете да маркирате ролята на изпълнителя въз основа на албум.
Тъй като във вашите таблици няма връзка, която да дефинира записа в artist_role
таблицата е за конкретен албум. И така, това, което бих предложил, е да създадете междинна таблица, съдържаща role_id
,artist_id
и album_id
.
За да използвате тази междинна таблица с manyToMany
на laravel връзка, можете да дефинирате методите във вашите модели, като посочите един атрибут като осев атрибут.
За напр. в Модел на художник :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Дефинирайте подобни методи и за други модели..
Актуализация:
За получаване на Artist
с ролята си в Албум добавете следния метод в Album
модел:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
За роли добавете следния метод:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}