Php 如何在Laravel中将一系列产品的价格与其数量相加

Php 如何在Laravel中将一系列产品的价格与其数量相加,php,laravel,eloquent,eloquent-relationship,Php,Laravel,Eloquent,Eloquent Relationship,我试图计算多个产品的价格和数量之和。 请求是: [{"product_id": 14, "quantity": 1}, {"product_id": 18, "quantity": 1}, {"product_id": 15, "quantity": 1}] 我从上面的数组中得到乘积_id[14,18,15],其中求和: Product::whereIn('id', $pro

我试图计算多个产品的价格和数量之和。 请求是:

[{"product_id": 14, "quantity": 1}, {"product_id": 18, "quantity": 1}, {"product_id": 15, "quantity": 1}]
我从上面的数组中得到乘积_id[14,18,15],其中求和:

Product::whereIn('id', $product_ids)->sum("prices");

我如何在计算求和时考虑数量,我可以用FoeCH来计算,但是还有其他的解决方案吗?< /P> < P>你的“请求”看起来像JSON,所以我们必须用<代码> JSONY-DECODE < /C> >将它转换成一个对象或数组。< /P>

$json='[{“产品标识”:14,“数量”:1},{“产品标识”:18,“数量”:1},{“产品标识”:15,“数量”:1}];
$collection=collect(json_decode($json));
$totalPrice=产品::查询()
->选择('id','price')
->其中('id',$collection->pull('product_id'))
->cursor()//我们实际上不需要在内存中加载模型。
->减少(函数($累计,$product)使用($collection){//将集合减少为单个值
返回$累计+($product->price*$collection->FIRSTHERE('product_id',$product->id)->数量);
},0);//设置初始值$contracted为0
或者使用速记闭包

$totalPrice=Product::query()
->选择('id','price')
->其中('id',$collection->pull('product_id'))
->游标()
->减少(fn($a,$p)=>a+($p->price*$collection->firstWhere('product_id',$p->id)->数量),0);

将数量乘以非
产品id的数量
当然对不起,我编辑了这个问题,谢谢:)这需要更多的信息。这是特定产品的订单吗?JSON代表什么?好吧,这是请求,我正在尝试创建和订购,因此我从请求中获得产品ID和数量,我需要计算总和。