如何与数据透视表建立关系?

时间:2018-11-21 16:35:44

标签: laravel-5 eloquent

我有一张桌子:

类别-这是车辆类别

enter image description here

dicts_groups-我在那里有很多东西

enter image description here

字典-对于我的字典组,我看到什么是身体类型

enter image description here

category_dict_group-数据透视表

enter image description here

我的类别课程

public function bodyTypes()
    {
        return $this->belongsToMany('App\DictGroup');
    }

这是我的dictGroup类

public function dicts() {
        return $this->belongsTo('App\Dict');
   }

我想获取类别= 1的所有身体部位,所以我的代码现在很简单:

dd(Category::find(1)->bodyTypes()->pluck('id'));

结果是

Collection {#248 ▼
  #items: array:1 [▼
    0 => 7
  ]
}

这没关系,原因7是我认为来自数据透视表的dict_group_id。我如何从dict获取身体类型列表?就像我需要添加到函数bodyTypes以便从表DICTS(id,symbol,public_name)中获取列表一样

1 个答案:

答案 0 :(得分:0)

您可以使用with()来渴望加载关系:

dd(Category::with('bodyTypes', 'bodyTypes.dicts')->find(1)->bodyTypes);

这应该返回所有bodyTypes,其中已加载dicts关系。

以下内容应为您提供所有词典的集合:

$c = Category::with('bodyTypes', 'bodyTypes.dicts')->find(1);
dd($c->bodyTypes->pluck('dicts'));