首页 文章

Laravel 5队列侦听器异常

提问于
浏览
1

我正在尝试让队列在laravel 5中工作并且队列侦听器正在输出:

php工匠队列:听

[ErrorException]
未定义的索引:表

存在“jobs”和“failed_jobs”表,config.php设置为“database” .

搜索laravel论坛和google还没有找到解决方案,amy想法在哪里看?

1 回答

  • 0

    这很可能不是Laravel Queue系统的错误 . 相反,当未知/未设置元素访问数组时,PHP会抛出此错误 .

    PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"

    例如:

    // Initialise an empty array
        $myArray = [];
    
        // Attempt to access an element that hasn't been set yet
        echo $myArray['breadCake'];
    

    在您的情况下,查看您的代码,处理排队和搜索['table'],[“table”]或任何需要“表”设置的内容 .

    阅读本文并考虑使用Laravel Queues记住以下几点可能会很方便:

    • 队列是异步的,除非您将它们传递到队列中,否则无法访问您在应用程序中设置的变量 .

    • 在Laravel 5中,捕获Event __construct()方法中存在的作业所需的所有数据 . 事件可以访问名为SerializesModels的特征 . 您可以将模型作为实例(带有属性)传递给__construct()方法(例如__construct(User $ user)) . 将变量分配给Event类范围(例如:$ this-> user = $ user) . 传递给EventListener句柄(Event $ event)方法 . 这在队列处理时被调用.__construct()应该是空白的(或者用存储库/服务/其他方便的部分填充) .

    • 您可以访问传递给句柄的对象(Event $ event)方法:

    public function handle(MyEvent $myEvent) 
    {
        $this->user = $myEvent->user;
        $mailData = ['user'=>$this->user];
        Mail::queue('viewdir.view',$mailData, function($message) use ($mailData) {
            $message->to($mailData['user']->email);
            // other stuff
        });
    }
    

    我希望这有助于任何人阅读 .

相关问题