我正在尝试使用数据库驱动程序排队电子邮件 . 使用 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 回答
Mail::queue
与Mail::send
完全相同,只是排队等待发送 .因此,它需要与
Mail::send
相同的参数,其中第二个参数需要是一个数组,因此,当您提供数组时它为什么工作,而当您提供一个对象时则不工作 .只需将
$this->data=compact('user');
更改为数组形式,它就可以正常工作 .当你遇到像这样的事情时,docs非常有用 .