问题描述
菜鸟一枚,目前一个订单自动生成一张发票,一个订单表,一个发票表,一对一关系。现在后台要加功能,实现某用户的多张发票可以合并开一张。
问题出现的环境背景及自己尝试过哪些方法
现在想加个发票合并表,发票表加个字段 合并表id,但是后台发票列表查询以发票为主表查询,以前的数据没有合并表id,如何查询把以前的数据都带上?或者还有什么方法
菜鸟一枚,目前一个订单自动生成一张发票,一个订单表,一个发票表,一对一关系。现在后台要加功能,实现某用户的多张发票可以合并开一张。
现在想加个发票合并表,发票表加个字段 合并表id,但是后台发票列表查询以发票为主表查询,以前的数据没有合并表id,如何查询把以前的数据都带上?或者还有什么方法
逻辑上控制发票和订单的关系,把发票和订单关系改成一对多就可以了。加一个发票订单关联表实现一对多关系。发票在点击生成的时候才创建,根据用户选择的订单id创建合并的发票,而不是跟订单一起创建。
订单表
发票表
发票订单关联表(存储哪些订单开了发票。开到了哪张发票上)
发票表
发表ID,发票号,开票金额...等等
发票关联表
订单ID,发票ID,开票时间,状态(成功/失败)
开票的时候传入需要开票的订单ID即可。
先检查是否被开过票,没有的话,批量写入发票关联表即可
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
标题文字 ##场景一:用户可以选择多个订单开一张发票
此时在订单表中加入 invoice_id 字段即可、此时用户选择订单(A、B、C)合并开一张发票在发票表中创建数据然后更新用户选择的订单的 invoice_id 字段即可。如下设计即可:
场景二:若系统限制一个订单必须对应一张发票、而用户可以选择合并订单开发票。此时在如上逻辑下修改发票表增加 host_id 字段来表示被合并到的发票 id 。这个设计如果 host_id > 0 既被合并的发票,同时兼容多订单开一张发票、多发票合并为一张。
以上代码使用 laravel 数据迁移方式书写。