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

时间:2015-10-25 18:56:25

标签: php email queue laravel-5.1

我试图使用数据库驱动程序排队电子邮件。使用Mail::send电子邮件按预期发送。但是当我使用Mail::queue时,传递给视图的用户对象会获得null"尝试获取非对象的属性"。

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

 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 个答案:

答案 0 :(得分:1)

Mail::queue基本上与Mail::send完全相同,除非您将它们排队等待发送。

因此,它需要与Mail::send相同的参数,其中第二个参数需要是一个数组,因此当你提供一个数组时它为什么工作,而当你提供一个对象时却没有。

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

当你遇到这样的事情时,docs非常有用:)。