我有一个Laravel工作,我派遣从文件中读取客户数据 . 作业具有 Logger 模型依赖性,此 Logger 跟踪某些统计信息,然后在作业完成时写入日志数据库表 . 当我立即调度此作业时,它工作正常,但如果我使用完全相同的参数排队完全相同的作业,然后从队列中运行它失败,并显示错误:
[Illuminate\Database\Eloquent\ModelNotFoundException]
No query results for model [app\Models\MyModel].
我认为这是由于Laravel队列系统中固有的序列化/非序列化特性打破了Eloquent,当我从未真正尝试在db中查找某些内容时,它尝试使用findOrFail()方法 . 我只是从空白模型创建一个新日志 . 无论如何,很明显,相同的Laravel作业在没有排队的情况下运行良好 - 但排队时失败了 . 我很茫然,想知道是否有办法解决这个问题 .
谢谢 .
2 回答
我通过实例化然后保存模型对象然后将其传递给作业的构造函数来解决它,因此它至少有一个主键集 . 这消除了findOrFail()方法 . 有点hacky,但这是我能想到的最好的 .
制作一个错误处理程序(把它放在你的路线中)