2017-10-06 39 views
2

我玩laravel首次,我就如何實現一個鏈接表的關係有點困惑。我有3個表:坦克,TankContent內容一個鏈接表Laravel關係 - 困惑

我有以下型號:

坦克:

class Tank extends Model 
    { 
     public function getTankContent() 
     { 
      return $this->hasMany('App\TankContent', 'tankID', 'tankID'); 
     } 
    } 

TankContent:

class TankContent extends Model 
{ 
    public function getTank() 
    { 
     return $this->belongsTo('App\Tank', 'tankID', 'tankID');  
    } 

    public function getContent() 
    { 
     return $this->belongsTo('App\Content', 'contentID', 'contentID'); 
    } 
} 

內容:

class Content extends Model 
{  
    public function getContentTanks() 
    { 
     return $this->hasMany('App\ContentTank', 'contentID', 'contentID'); 
    } 
} 

現在我試着打電話說tankID 2和獲取

$content = Tank::find(2); 
$items = $content->getTankContent; 

這裏面所有的內容細節將列出我的內容。但是,那麼我怎樣才能將結果鏈接到TankContent模型的getContent()

在此先感謝。希望我只是需要它解釋,然後它會全部點擊。

P.S我曾嘗試閱讀https://laravel.com/docs/5.5/eloquent-relationships#many-to-many和IM仍然難倒!

回答

0

TankContent不是必需的,belongsToMany關係方法屬於在坦克和內容模式。

https://laravel.com/docs/5.5/eloquent-relationships#many-to-many

從這裏也可以看有沒有RoleUser模型中,模型只是角色和用戶。這些模型上的belongsToMany關係定義中間表或角色表是role_user。

可以額外定義與withPivot這種關係()鏈接到所述belongsToMany方法等領域。 (請閱讀「檢索中間表列」)。因此,可能沒有理由爲中間/數據透視表建立單獨的模型。

+0

我應該預先指定TankContent的其他字段就像DateAdded。所以它是一個鏈接表,但可能有一個坦克中的每種類型的內容需要一個日期戳4件物品 – JustinDonnnelly

+0

@JustinDonnnelly,你讀過我答案的最後一段嗎? – Devon

+0

對不起,這只是煩我!我現在就試試:) – JustinDonnnelly