PHP基于Laravel中取B表中数据(集合)来更新A表数据(集合)

本文介绍了一种在订单完成后更新商品库存与销售额的方法。通过对商品信息表与订单商品信息表的数据处理,实现商品库存减少及销售额增加的自动化更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际项目中,我们会遇到同时更新数据库中某个表(下称表A)中的多条数据,而更新得内容则需要取自于另外一张表(下称表B),表A和表B都是从数据库中get方式取得的数据,在这种情况下我们可以这么做:
// 根据商家Id查找出所有的商品信息
    $goodsInfo = Goods::whereIn('shop_id', explode(',', $sidStr))->get();
    // 根据订单id查找出所有的订单商品信息
$storeOrderInfo = OrderGoods::whereIn('order_id', explode(',', $orders->order_ids))->get()->toArray();
    // 通过使用array_reduce方法获得关联数组['goods_id'=>goods_quantity]
$goodsSaleAmount = array_reduce($storeOrderInfo, function ($r, $i) {
!isset($r[$i['goods_id']]) ? $r[$i['goods_id']] = 0: $r[$i['goods_id']] += $i['goods_quantity'];
return $r;
});
    // 循环遍历要更新的商品信息
foreach ($goodsInfo as $key=>$item) {
        // 根据商品信息中的id判断关联数组中是否存在该id对应的销售量
if (isset($goodsSaleAmount[$item->id])) {
            // 更新商品信息
$item->update([
            // 商品信息的库存减去该商品对应商品订单的销售量
'goods_stocks' => $item->goods_stocks - $goodsSaleAmount[$item->id],
            // 商品信息的销售量加上该商品对应商品订单的销售量
'goods_sales_volume' => $item->goods_sales_volume + $goodsSaleAmount[$item->id]
);
}
}

上面代码的逻辑是在订单完成后,对商品库存已经销售额进行更新。循环要更新的数据集,对要作为操作数的集合进行处理。

版权申明:内容原创,版权归原创者所有。如要转载请联系作者。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值