使用 Laravel 队列时,不要在模型上额外贮存数据,这样你在消费者一方将会拿不到额外贮存的数据。
因为在投递队列序列化时,Laravel 对实现了 \Illuminate\Contracts\Queue\QueueableEntity 接口的对象进行特别处理(Model 实现了这个接口),只是存储了模型的类名和主键ID,也就是说在消费者消费前的反序列化操作中,会直接提取类名和主键ID进行查询获得一个新的模型,而不是投递的模型,所以你在模型上贮存的数据将会丢失。
展开
1