You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel:如何在load方法中为关联的关联模型添加筛选条件

解决方案

你可以通过嵌套闭包或分层数组的方式,同时对SupplierProduct和关联的Product添加筛选条件,两种写法都能实现需求:

写法一:嵌套闭包风格

$supplier->load([
    'supplierProducts' => function ($query) use ($supplierProductParam, $productParam) {
        // 筛选 SupplierProduct 表的字段
        $query->where('field', $supplierProductParam)
              // 嵌套闭包筛选关联的 Product 模型
              ->with(['product' => function ($productQuery) use ($productParam) {
                  $productQuery->where('product_field', $productParam);
              }]);
    }
]);

写法二:分层数组风格

$supplier->load([
    // 筛选 SupplierProduct 表
    'supplierProducts' => function ($query) use ($supplierProductParam) {
        $query->where('field', $supplierProductParam);
    },
    // 直接对关联的 Product 模型加筛选
    'supplierProducts.product' => function ($query) use ($productParam) {
        $query->where('product_field', $productParam);
    }
]);

核心说明

  • 两种写法逻辑完全一致,只是代码组织形式不同;
  • 外层闭包/数组项负责处理SupplierProduct的筛选条件,内层闭包/嵌套数组项负责处理关联Product的筛选;
  • 若需要多字段筛选,直接在对应闭包里追加->where()语句即可。

内容的提问来源于stack exchange,提问作者Herokiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:52:38