我有这样的类别迁移:
id
title
parent_id
然后我将产品存储在另一个这样的迁移表中
id
category_id
title
price
然后我将产品存储在另一个迁移表库存中,如下所示:
id
product_id
size (like M/L/1 Year etc)
qty
我可以使用以下查询获取所有类别的产品:
$category = Category::first();
$products = $category->products;
我的问题是如何获得特定尺寸的产品?例如我想获得一个类别的所有M尺寸产品?
更新后的答案:
$category = Category::first();
$products = $category->products()
->whereHas('stocks', function($q){
$q->where('size', '=', 'M');
})
->get();
答案 0 :(得分:1)
首先,您将获得所有类别。
$category = Category::first(); // You can get all the categories or in where condition whatever your need
$size = "M" //Comming from the request
对于具有上述类别和尺寸的产品 希望您在产品模型中为库存定义了关系。
$product = $category->whereHas('products', function($query) use ($size){
return $query->whereHas('stock', function($stock) use ($size){
return $stock->where('size', $size);
});
})->with(['products'=>function($q) use ($size){
return $q->whereHas('stock', function($stock) use ($size) {
return $stock->where('size', $size);
});
}])->get();
这将为您提供仅包含要求中提供尺寸的产品的类别。
答案 1 :(得分:0)
可以,
$category = Category::first();
$products = $category->products()
->whereHas('stocks', function($q){
$q->where('size', '=', 'M');
})
->get();