Laravel8实现ResetPassword通知队列时报Undefined property:$queue错误如何解决
错误产生原因
该错误是因为仅为ResetPassword通知类实现了ShouldQueue标记接口,缺少队列功能依赖的Illuminate\Bus\Queueable Trait。ShouldQueue仅用于标识类需要被队列调度,而队列运行所需的$queue、$connection等基础属性和配套方法,都是由Queueable Trait提供的,缺少该Trait时框架读取队列属性就会抛出未定义的错误。
解决方案
只需在ResetPassword类中引入Queueable Trait即可修复问题,修改步骤如下:
- 在文件头部引入
Queueable的命名空间:
use Illuminate\Bus\Queueable;
- 在类内部声明使用该Trait:
class ResetPassword extends Notification implements ShouldQueue { use Queueable; // 新增该行引入队列Trait // 原有其余代码无需修改 public $token; public static $toMailCallback; public function __construct($token) { $this->token = $token; } // ... 剩余via、toMail、toMailUsing方法保持不变 }
修改完成后执行php artisan config:clear清理配置缓存,再测试重置密码通知功能,任务就会正常写入jobs表。如果需要自定义队列参数,还可以在类中添加对应属性配置,比如指定队列名public $queue = 'notify';、设置任务重试次数public $tries = 2;等。
内容的提问来源于stack exchange,提问作者user9277271
相关产品推荐
相关产品推荐

