我有三种型号:
Car.php
,Colour.php
,Image.php
。
它们具有以下关系:
Car belongsToMany Colour
:因为汽车可以有多种颜色。
Colour belongsToMany Car
:因为许多汽车上都会出现一种颜色。
Car belongsToMany Image
:因为汽车可以具有多个图像。
Image belongsToMany Car
:因为一个图像可以被多辆汽车使用。
Image belongsTo Colour
:因为每个图像都必须具有颜色。
Colour hasMany Image
:因为在许多图像中都可以找到红色。
如果我写Car::find(1)->load('colours.images);
,它将返回所有与之相关的颜色,但是每种颜色都有每个使用该颜色的图像。因此,我将看到红色的汽车1、2、3等,而不仅仅是汽车1的图像。
colours.images
似乎忽略了最初的汽车。
我在做什么错了?
答案 0 :(得分:0)
尝试类似Car :: find($ id)-> with(['colours.images'=> function($ query){$ query-> where('car_id',$ id);}])类似的东西< / p>
答案 1 :(得分:0)
您需要的是HasManyThrough关系,但是问题是您的汽车,颜色和图像处于多对多关系(hasManyThrough仅适用于一对多关系嵌套)。
检查this answer以获得更多信息和可能的解决方法。