Laravel 5队列侦听器异常

时间:2016-03-17 05:12:13

标签: laravel

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

php artisan queue:listen

[ErrorException]
  未定义的索引:表

"工作"和" failed_jobs"表存在,config.php设置为"数据库"。

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

2 个答案:

答案 0 :(得分: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
        });
    }
    

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

答案 1 :(得分:0)

所以我遇到了同样的问题,但是我发现在将数据库用作同步驱动程序时已将驱动程序设置为同步。将驱动程序设置为数据库可以为我解决