星之茫 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必需是不同的对象,不能还停留在上一个

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题