首页 文章

laravel 5.1数据库队列无法正常工作

提问于
浏览
1

我正在尝试使用数据库驱动程序排队电子邮件 . 使用 Mail::send 电子邮件按预期发送 . 但是当我使用 Mail::queue 时,传递给视图的用户对象会得到 null "Trying to get property of non-object" .

我有一个邮件程序类,这些是负责发送电子邮件的方法:

public function sendAssignmentEmail(User $user)
    {
        $this->to=$user->email;
        $this->view='emails.assigned';
        $this->data=compact('user');
        $this->subject='subject';
        $this->deliver();
    }

public function deliver()
    {
        $to=$this->to;
        $subject=$this->subject;
        $from=$this->from;
        return $this->mailer->queue($this->view,$this->data, function($message)
        use($to, $subject, $from)
        {
            $message->from($from, 'example.com');
            $message->to($to);
            $message->subject($subject);
        });
    }

我究竟做错了什么?我知道问题在于

$this->data

如果我传递一个数组,队列就可以工作,但如果数据是一个对象的形式,它就不会 .

1 回答

  • 1

    Mail::queueMail::send 完全相同,只是排队等待发送 .

    因此,它需要与 Mail::send 相同的参数,其中第二个参数需要是一个数组,因此,当您提供数组时它为什么工作,而当您提供一个对象时则不工作 .

    只需将 $this->data=compact('user'); 更改为数组形式,它就可以正常工作 .

    当你遇到像这样的事情时,docs非常有用 .

相关问题