php - Laravel groupBy 列并根据数量列添加总计

标签 php mysql laravel eloquent

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

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

如果我使用

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

我得到了每个产品出现的计数。

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

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

编辑 这是我的数据库表

enter image description here

期望的输出:

产品 (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/

相关文章:

mysql - 选择具有不同参数的最新记录行

mysql - char 字段可以保留尾随空格字符吗?

php - Laravel 表单请求未更新可为空字段

php - SwiftMailer 测试用户名和密码

javascript - 将 href 链接到其他页面选定的下拉选项值

php - 来自 cron 脚本的 Mage::getStoreconfig()

mysql - 分组依据在具有不同列的单行中

php - 方法 Laravel\\Passport\\Bridge\\AccessToken::__toString() 不能抛出异常

php - laravel 4 如何检索登录用户数据

php - 单击按钮如何更改下拉菜单的内容?