【问题标题】:laravel 5.1 database queue not workinglaravel 5.1 数据库队列不工作
【发布时间】:2016-01-24 20:10:52
【问题描述】:

我正在尝试使用数据库驱动程序来排队电子邮件。使用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

如果我传递一个数组,队列会起作用,但如果数据是对象的形式,它就不会。

【问题讨论】:

    标签: php email queue laravel-5.1


    【解决方案1】:

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

    因此,它需要与 Mail::send 相同的参数,其中第二个参数需要是一个数组,因此为什么它在提供数组时有效,而在提供对象时无效。

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

    docs 在您遇到此类问题时非常有用:)。

    【讨论】:

    • 我没明白你的意思!
    • 终于明白你的意思了。万分感谢。我传递了一个数组而不是一个对象作为数据
    猜你喜欢
    • 2016-10-26
    • 2018-06-20
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多