Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php LAVEL groupBy列并基于数量列添加总计_Php_Mysql_Laravel_Eloquent_Laravel Eloquent - Fatal编程技术网

Php LAVEL groupBy列并基于数量列添加总计

Php LAVEL groupBy列并基于数量列添加总计,php,mysql,laravel,eloquent,laravel-eloquent,Php,Mysql,Laravel,Eloquent,Laravel Eloquent,我在Laravel(order_product)中有一个数据透视表,它记录了属于某个订单的每个产品 我使用以下列“订单id、产品id、数量” 如果我使用 DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id'); 我得到每次产品出现的次数 然而,有些产品在一个订单中出现不止一次。如何将每个产品乘以数量列,然后按产品id分组并将它们一起计算 最后,我需要得到按产品分组的所有订单的总数 编辑

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

我使用以下列“订单id、产品id、数量”

如果我使用

DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id');
我得到每次产品出现的次数

然而,有些产品在一个订单中出现不止一次。如何将每个产品乘以数量列,然后按产品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

我认为您需要使用数量字段的总和对每个产品进行聚合。因此,应采取以下措施:

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

请张贴表格结构、样本数据和所需信息output@lad2025编辑了这篇文章。看一看。请张贴表格结构、样本数据和所需信息output@lad2025编辑了这篇文章。看一看。