我正在尝试在 laravel 中对命令进行排队。使用数据库作为队列驱动程序。调度发生得很好,我可以看到数据库上的条目。但是当我从终端运行监听命令时
php artisan队列:听
出现以下错误:
[ErrorException]
unserialize(): Error at offset 78 of 82 bytes
Run Code Online (Sandbox Code Playgroud)
经过三个小时的拉扯自己的头发后,我终于解决了这个问题。发布修复程序,以防有人遇到同样的问题。
我将 Eloquent 模型注入到我的 Command 中,即使在使用 Trait 之后,Laravel 在序列化/反序列化 Eloquent 模型时也遇到了麻烦SerializesModels。
解决方案是传递 Eloquent 对象 id,而不是整个对象,并使用 id 在处理程序中取回对象。