Laravel groupBy列并根据Quantity列添加总计

时间:2017-08-11 06:02:27

标签: php mysql laravel eloquent laravel-eloquent

我在Laravel(order_product)中有一个数据透视表,它记录了属于某个订单的每个产品。

我使用以下列“ order_id,product_id,qty

如果我使用

DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id');

我得到每个产品发生的计数。

但是,某些产品在订单中不止一次出现。如何将每个产品乘以 qty 列,然后按 product_id 进行分组并将它们一起计算?

最后,我需要获得按产品分组的所有订单的总数。

修改 这是我的数据库表

enter image description here

期望的输出:

产品(ID = 30)在表中出现 5 次,来自5个不同的订单。产品总数乘以数量列将等于 13

1 个答案:

答案 0 :(得分:0)

我认为您希望使用每个产品的数量字段的总和进行汇总。因此,以下应该有效:

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