Trong giản đồ hiện tại của bạn, bạn sẽ không thể gắn thẻ vai trò của nghệ sĩ trên cơ sở album.
Vì không có mối quan hệ nào trong các bảng của bạn để xác định rằng mục nhập trong artist_role
bảng dành cho album cụ thể. Vì vậy, những gì tôi đề xuất là tạo một bảng trung gian chứa role_id
, artist_id
và album_id
.
Để sử dụng bảng trung gian này với manyToMany
của laravel , bạn có thể xác định các phương thức trong mô hình của mình, chỉ định một thuộc tính làm thuộc tính pivot.
Ví dụ:trong Mô hình nghệ sĩ :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Cũng xác định các phương pháp tương tự cho các Mô hình khác ..
Cập nhật:
Để nhận được Artist
với vai trò của nó trong Album, hãy thêm phương thức sau vào Album
mô hình:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Đối với các vai trò, hãy thêm phương thức sau:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}