星之茫 2019-10-16 13:51 采纳率: 100%
浏览 811
已结题

laravel 队列执行保存数据,会重复插入数据?

我在laravel5.7队列中执行一条保存数据的操作,但我数据库里面出现了两条一模一样的数据,这是什么情况啊?
图片说明

图片说明

循环的原始数据是没有重复的,是什么原因导致->save()重复添加了两条数据的啊?

而且这个问题是偶发性的,执行这个队列多次,有时候不会出现这个问题,而有的时候又会出现这个问题

图片说明

  • 写回答

1条回答 默认 最新

  • lty2017 2019-10-16 15:14
    关注

    laravel 队列是异步的,在[DB开始交易]那里,这个时候循环就往下执行save就会有对象还未切换过来的情况,还是上一个的。放在foreach里处理并不好。
    你把存回数据的逻辑分出来,foreach里用个队列存放new出来的对象,new也是耗时的操作。foreach结束后,依次取出队列中new好的对象来存回。
    可用while循环,存回一个完成后在拿出下一个来。关键是$chapter->save这步,$chapter必需是不同的对象,不能还停留在上一个

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码