在 laravel 中获取订单产品类别

Posted

技术标签:

【中文标题】在 laravel 中获取订单产品类别【英文标题】:get order products categories in laravel 【发布时间】:2021-03-22 08:58:00 【问题描述】:

我有四张桌子 OrderCategoryProductOrder_Product

每个产品都属于一个类别 每个订单都有很多产品

我将订单产品保存在order_product表中,

现在在 orderResource 我想在每个类别中有多个 order->products 所以 OrderResource 应该有

data 
[

 category_name: 'something',
productsCount: 3,
,

category_name: 'somethingelse',
productsCount: 2

]

怎么做?

【问题讨论】:

laravel.com/docs/8.x/eloquent-resources @AnuratChapanond 我知道如何制作资源,这是我无法弄清楚的特定关系/查询,如何计算类别->与订单相关的产品 您可以使用 $category->products->count() 来按类别获取产品数量 @AnuratChapanond 这将计算所有类别的产品,我只想计算订单中的产品 你想要的是不可能的,因为我们可以使用订单来获取产品数量,因为订单可以有多个产品,但是我们不能像这样得到产品类别。因为品类是和产品挂钩的,一个订单可以有多个产品。所以类别也可以是多个。 【参考方案1】:

所以您想从订单中获取产品,并按类别对产品进行分组,并计算一个类别中的产品数量。

$orders = Order::with(['products' => function($query) 
    $query->groupBy('category_id')
        ->select(DB::raw('count(*) AS productsCount'), 'category_id')
        ->with('category');
])
->get();

foreach($orders as $order) 
    foreach($order->products as $product) 
        $product->productsCount;
        $product->category->name;
    

【讨论】:

以上是关于在 laravel 中获取订单产品类别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中明智地获取产品类别?

尝试使用数组仅获取 Laravel 中每个订单的特定产品

获取 WooCommerce 订单的每个项目的产品类别

如何在 Laravel 中获取销售订单列表(交易)?

从父多对多关系获取所有子模型 Laravel Eloquent

在 laravel 中分页急切加载