You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel账单销毁时同步扣减Product Service库存的问题求助

解决Laravel账单销毁时同步扣减Product Service数量的问题

你需要在销毁账单前,先遍历该账单关联的所有BillProduct记录,对每个产品调用Utility::total_quantity方法扣减product service的数量,之后再删除BillProduct记录。

修改后的destroy方法代码如下:

public function destroy(Bill $bill)
{
    if (\Auth::user()->can('delete bill')) {
        if ($bill->created_by == \Auth::user()->creatorId()) {
            // 获取当前账单关联的所有BillProduct记录
            $billProducts = BillProduct::where('bill_id', '=', $bill->id)->get();
            
            // 遍历每条记录,同步扣减product service的数量
            foreach ($billProducts as $billProduct) {
                Utility::total_quantity('minus', $billProduct->quantity, $billProduct->product_id);
            }
            
            $bill->delete();
            
            if ($bill->vender_id != 0) {
                Utility::userBalance('vendor', $bill->vender_id, $bill->getTotal(), 'debit');
            }
            
            // 删除账单关联的BillProduct记录
            BillProduct::where('bill_id', '=', $bill->id)->delete();
        }
    }
}

关键说明:

  • 必须先处理数量扣减再删除BillProduct,否则删除后无法获取产品ID和数量信息
  • 复用了你在update方法中使用的Utility::total_quantity方法,保持和创建/更新时一致的数量同步逻辑
  • 先查询所有关联记录再遍历,避免在操作过程中出现数据丢失问题

内容的提问来源于stack exchange,提问作者Mehdi Bakhtiari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:13:11