php - Laravel 5.6:汽车有很多颜色有很多图像。当试图找到汽车 1 的所有“红色”图像时,我得到所有汽车的红色图像
问题描述
我有三个模型:
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
忽略了最初的汽车。
我究竟做错了什么?
解决方案
尝试类似 Car::find($id)->with(['colours.images' => function ($query) { $query->where('car_id', $id); }])
推荐阅读
- android - 我的应用程序在启动时崩溃
- java - 线程“main”java.lang.Error 中的异常:未解决的编译错误:PrintStream i 类型中的方法 printf(String, Object[])
- python - 如何升级 openssl 版本并将其链接到 python 3.6.5
- html - VBA Word 从 HTML 粘贴 UTF-8 字符
- html - CSS 曲线按钮
- c# - ac#这行代码看不懂,网上也找不到答案
- java - 从随机选择器列表中排除数字
- python - 张量内容的逻辑运算
- r - 如何在R中以有效的方式重命名列表列表中的元素?
- javascript - 页面刷新后如何保持 POST 的变量?