我有三张相关的表,虽然它们似乎不适合文档中的任何示例,或者我没有意识到哪一个。
这是表格的一个例子:
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
有很多Specs
,Category
有很多Specs
,Specs
属于Device
, Category
)。
我不知道如何建立关系,或者Eloquent是否能够通过单个查询完成此操作。
答案 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');
}