Laravel与链接表的关系 - 困惑

时间:2017-10-06 12:43:53

标签: php laravel

我第一次玩laravel,我对如何实现链接表关系感到有些困惑。我有3个表:坦克, TankContent 内容

我有以下型号:

坦克:

   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而我仍然难倒!

1 个答案:

答案 0 :(得分:0)

不需要TankContent,belongsToMany关系方法属于Tank和Content模型。

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

从这里可以看到没有RoleUser模型,模型只有Role和User。这些模型上的belongsToMany关系定义了中间或数据透视表是role_user。

您还可以使用链接到belongsToMany方法的withPivot()来定义该关系上的其他字段。 (阅读"检索中间表列")。因此,可能没有理由为中间/数据透视表提供单独的模型。