Laravel-许多关系限制了渴望的负荷

时间:2019-03-19 10:34:04

标签: laravel eager-loading

多对多关系约束

表:产品 产品编号 类别

表:功能 Feature_id:11 Feature_name:远程

数据透视表:FeatureProduct Feature_id Product_id

$products = App\Product::with([‘features' => function ($query) {
    $query->where(‘id’, 11);
}])->where(‘category_id’, 17)->get();

仍然会获得所有类别= 11的产品,而不是滤除feature_id = 11

:with Query where子句,我不知道应该输入什么,它是ID属于功能。

这是单个产品的输出方式

Product {#1372 ▼
  #original: array:13 [▼
    "id" => 1
    "code" => "PL6881"
    "v_description" => "E14 41 bóng + LED pha lê 642 hạt"
    "width" => 1200
    "length" => null
    "height" => 1800
    "price" => 47800000
    "vendor_id" => 1
    "category_id" => 17
    "active" => 1
    "discount" => 0
    "hero" => 0
    "promote" => 0
  ]
  #relations: array:1 [▼
    "features" => Collection {#5858 ▼
      #items: array:3 [▼
        0 => Feature {#3149 ▼
          #attributes: array:4 [▼
            "id" => 3
            "code" => "Chau Au"
            "v_description" => "Châu Âu"
            "att_cate_id" => 1
          ]
        }
        1 => Feature {#3340 ▶}
        2 => Feature {#3492 ▶}
      ]
    }
  ]

}

2 个答案:

答案 0 :(得分:0)

尝试以下代码,

$products = App\Product::with([‘features'])
->whereHas(‘features', function ($query) {
   $query->where(‘id’, 11);
})->where(‘category_id’, 17)->get();

我已经编辑了答案。请立即检查

答案 1 :(得分:0)

I actually found this useful

$products = Product::with('features')->whereHas('features', function ($query) {
    return $query->where('id', 3);
})->where('category_id',17)->get();