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

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

图片说明

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

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

图片说明

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