使用laravel如何才能得到一个特定尺寸的产品类别?

5tmbdcev  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(381)

我有这样的分类迁移:

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();
v8wbuo2f

v8wbuo2f1#

首先你得到所有的分类。

$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();

这将给您的类别,其中只有产品的大小提供了请求。

yk9xbfzb

yk9xbfzb2#

你能做到,

$category = Category::first();
$products = $category->products()
                     ->whereHas('stocks', function($q){
                          $q->where('size', '=', 'M');
                      })
                     ->get();

相关问题