2017-10-06 10 views
2

私はlaravelで初めて遊んでいます。リンクテーブル関係を達成する方法について少し混乱しています。 タンク、TankContentコンテンツリンクテーブルとのLaravelの関係 - 混乱

私は次のモデルがあります:私は3つのテーブルを持っている

タンク:

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を呼び出そうとIMとその

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

の内のすべてのコンテンツの詳細情報を取得する。これは、私のコンテンツを一覧表示されます。しかし、結果をにリンクするにはどうすればいいですか?TContentモデルのgetContent()

ありがとうございます。うまくいけば私はそれを説明する必要があり、それはすべてクリックします。

p.s私はhttps://laravel.com/docs/5.5/eloquent-relationships#many-to-manyを読もうとしましたが、imはまだ困惑しています。

答えて

0

TankContentは必須ではなく、belongsToMany関係メソッドはTankおよびContentモデルに属します。

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

ここからあなたは何RoleUserモデルがありません見ることができ、モデルのみの役割とユーザーです。これらのモデルのbelongsToMany関係は、中間またはピボット・テーブルがrole_userであることを定義します。

さらに、belongsToManyメソッドにチェーンされたwithPivot()を使用して、その関係の他のフィールドを定義することができます。 (「中間表の列の取得」を参照)。したがって、中間/ピボット・テーブルに別個のモデルを持たせる理由はありません。

+0

私は、TankContentにDateAddedのような他のフィールドがあることを指定しておくべきです。だから、そのリンクテーブルがありますが、それぞれの日付スタンプ – JustinDonnnelly

+0

@ JustinDonnnellyを必要とするタンクに1つのタイプのコンテンツの4つのアイテムがある可能性があります、あなたは私の答えの最後の段落を読みましたか? – Devon

+0

申し訳ありませんが、これは私を迷惑にしています!私は今それを試してみます:) – JustinDonnnelly