三方雄辩的关系

时间:2016-01-23 23:45:55

标签: laravel laravel-5 eloquent laravel-5.1

我有三张相关的表,虽然它们似乎不适合文档中的任何示例,或者我没有意识到哪一个。

这是表格的一个例子:

Devices表:

| id |    Name   |
|----|:---------:|
| 1  |   Samsung |
| 2  |   Second  |
| 3  | Some Name |

Categories表:

| id |       Name      |
|----|:---------------:|
| 1  |  Some Category  |
| 2  |  Camera         |
| 3  |  Other Category |

Specs表:

| id |    Value   | category_id | device_id |
|----|:----------:|-------------|-----------|
| 1  | Some specs | 2           | 1         |
| 2  |    13MP    | 2           | 1         |
| 3  | Last specs | 1           | 2         |

现在让我们说我想运行一个类似&#34的查询;从相机= 13MP"的设备中选择。 为了更明确,我希望能够使用where('Camera', '13MP')代替where('2', '13MP')

我已经设置了基本关系(Device有很多SpecsCategory有很多SpecsSpecs属于DeviceCategory)。

我不知道如何建立关系,或者Eloquent是否能够通过单个查询完成此操作。

1 个答案:

答案 0 :(得分:3)

myfunction called [0] myfunction called [2] myfunction called [4] Done iterating 课程中设置ManyToMany关系:

Devices

public function categories(){ return $this->belongsToMany(App\Category::class)->withPivot('Value'); } 班级中设置ManyToMany关系:

Category

然后,如果您想获得具有13MP相机的设备,那么您可以这样做:

public function devices(){
    return $this->belongsToMany(App\Device::class)->withPivot('Value');
}