簡體   English   中英

Laravel 3表之間的雄辯關系

[英]Laravel Eloquent Relation between 3 table

我需要一些幫助來制作音樂庫數據庫。
我有3張唱片藝術家角色
我希望一位藝術家為每張專輯都扮演一個角色。 喜歡 :
藝術家1擔任專輯1的作曲家,但還擔任專輯2的編曲或專輯3的作曲家和編曲

我已經試過了 數據庫設計

數據庫應該如何顯示? 什么是類型關系?

在當前架構中,您將無法基於專輯標記藝術家的角色。
由於表中沒有關系來定義artist_role表中的條目用於特定專輯。 因此,我建議創建一個包含role_idartist_idalbum_id的中間表。
若要將此中間表與laravel的manyToMany關系一起使用,可以在模型中定義將一個屬性指定為數據透視表屬性的方法。

對於,例如在Artist Model中

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');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM