在 laravel 中获取订单产品类别
Posted
技术标签:
【中文标题】在 laravel 中获取订单产品类别【英文标题】:get order products categories in laravel 【发布时间】:2021-03-22 08:58:00 【问题描述】:我有四张桌子
Order
、Category
、Product
、Order_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 中获取订单产品类别的主要内容,如果未能解决你的问题,请参考以下文章