Php 拉威尔5.6:汽车有很多颜色,有很多图像。当试图找到所有“时”;“红色”;汽车1的图像,我得到所有汽车的红色图像

Php 拉威尔5.6:汽车有很多颜色,有很多图像。当试图找到所有“时”;“红色”;汽车1的图像,我得到所有汽车的红色图像,php,laravel,eloquent,relational-database,eager-loading,Php,Laravel,Eloquent,Relational Database,Eager Loading,我有三种型号: Car.php,color.php,Image.php 它们具有以下关系: 属于任何颜色的汽车:因为一辆汽车可以有多种颜色 任何汽车的颜色:因为一种颜色可以出现在许多汽车上 汽车属于多个图像:因为一辆汽车可以有多个图像 多辆车下的图像:因为一张图像可以被多辆车使用 图像属于颜色:因为每个图像都必须有一种颜色 颜色有许多图像:因为红色可以在许多图像中找到 如果我写Car::find(1)->load('colors.images)它返回所有预期的相关颜色,但是每种颜色都有使用该颜色

我有三种型号:

Car.php
color.php
Image.php

它们具有以下关系:

属于任何颜色的汽车
:因为一辆汽车可以有多种颜色

任何汽车的颜色
:因为一种颜色可以出现在许多汽车上

汽车属于多个图像
:因为一辆汽车可以有多个图像

多辆车下的图像
:因为一张图像可以被多辆车使用

图像属于颜色:因为每个图像都必须有一种颜色

颜色有许多图像
:因为红色可以在许多图像中找到

如果我写
Car::find(1)->load('colors.images)它返回所有预期的相关颜色,但是每种颜色都有使用该颜色的图像。所以我会看到车1、2、3等的红色,而不仅仅是车1的图像

这看起来像是
颜色。图像
忽略了初始车辆


我做错了什么?

尝试使用(['colors.images'=>function($query){$query->where('Car_id',$id);}])像Car::find($id)->这样的方法。

你需要的是关系,但问题是你的车、颜色和图像是多对多关系(hasManyThrough只适用于一对多关系嵌套)


检查更多信息和可能的解决方法。

查找之前使用
查找
颜色和图像之间的关系不使用汽车id,因此这不起作用。您可以发布一些示例数据和预期结果吗?