多对多关系约束
表:产品Product_id类别
表:功能Feature_id:11 Feature_name:remote
数据透视表:FeatureProduct Feature_id Product_id
$products = App\Product::with([‘features' => function ($query) {
$query->where(‘id’, 11);
}])->where(‘category_id’, 17)->get();
仍然获得category = 11的所有产品,而不是过滤掉feature_id = 11
:使用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 ▶}
]
}
]
}
试试下面的代码,
$products = App\Product::with([‘features'])
->whereHas(‘features', function ($query) {
$query->where(‘id’, 11);
})->where(‘category_id’, 17)->get();
我编辑了答案。请检查一下
我实际上发现这很有用
$products = Product::with('features')->whereHas('features', function ($query) {
return $query->where('id', 3);
})->where('category_id',17)->get();