我在 Laravel 中有一个数据透视表(order_product),它记录了属于订单的每个产品。
我使用以下列“order_id、product_id、qty”
如果我使用
DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id');
我得到了每个产品出现的计数。
但是,某些产品在订单中出现多次。如何将每个产品乘以数量列,然后按product_id分组并将它们一起计数?
最后,我需要获取按产品分组的所有订单的总数。
编辑 这是我的数据库表
期望的输出:
产品 (ID = 30) 在表中出现 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
关于php - Laravel groupBy 列并根据数量列添加总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45627983/