Laravel groupBy 列并根据数量列添加总计
Laravel groupBy column and add totals based on Quantity column
我在 Laravel (order_product) 中有一个数据透视表 table,它记录了属于订单的每个产品。
我用以下列“order_id,product_id,数量”
如果我使用
DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id');
我得到了每个产品出现的次数。
但是,有些产品在一个订单中出现不止一次。如何将每个产品乘以 qty 列,然后按 product_id 分组并将它们一起计算?
最后,我需要获取按产品分组的所有订单的总数。
编辑
这是我的数据库 table
期望的输出:
产品 (ID = 30) 在 table 中出现 5 次,来自 5 个不同的订单。产品总数乘以数量列等于 13
我认为您想使用每个产品的数量字段的总和进行聚合。因此,以下应该有效:
DB::table('order_product')->selectRaw('product_id, SUM(qty)')->groupBy('product_id');
这将对应于以下原始 MySQL 查询:
SELECT
product_id,
SUM(qty)
FROM order_product
GROUP BY
product_id
我在 Laravel (order_product) 中有一个数据透视表 table,它记录了属于订单的每个产品。
我用以下列“order_id,product_id,数量”
如果我使用
DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id');
我得到了每个产品出现的次数。
但是,有些产品在一个订单中出现不止一次。如何将每个产品乘以 qty 列,然后按 product_id 分组并将它们一起计算?
最后,我需要获取按产品分组的所有订单的总数。
编辑 这是我的数据库 table
期望的输出:
产品 (ID = 30) 在 table 中出现 5 次,来自 5 个不同的订单。产品总数乘以数量列等于 13
我认为您想使用每个产品的数量字段的总和进行聚合。因此,以下应该有效:
DB::table('order_product')->selectRaw('product_id, SUM(qty)')->groupBy('product_id');
这将对应于以下原始 MySQL 查询:
SELECT
product_id,
SUM(qty)
FROM order_product
GROUP BY
product_id