未定义的属性:App\Mail\DueReminder::$userdata在mailable中



我在尝试将数据从控制器传递到mailable-to-mail模板时出错:

这是我的可邮寄代码:

class DueReminder extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($dat)
{
$this->userdata = $dat;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('test@gmail.com', 'Test')
->subject('Test: Testing')
->view('email.sendReminder',['data1' => $this->userdata]);
}
}

这是我的控制器代码:

$when = now()->addMinutes(10);
$mails = User::join('courselist','courselist.coordinator','=','users.id')->join('course','courselist.course_id','=','course.id')->select('users.name','users.staffid','users.email','course.course_code','course.course_name')->where([['faculty_code','=',$slt_faculty->faculty_code],['role_id','=',2]])->get();
foreach($mails as $dat)
{
Mail::to($dat['email'])->later($when,new DueReminder($dat));
}

编辑:我使用了发送方法,它有效,但我想要延迟邮件,这就是我以后使用的原因。

您忘记定义类似public $userdatapublic属性$userdata

所以你的代码将是

class DueReminder extends Mailable
{
use Queueable, SerializesModels;
public $userdata;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($dat)
{
$this->userdata = $dat;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('test@gmail.com', 'Test')
->subject('Test: Testing')
->view('email.sendReminder',['data1' => $this->userdata]);
}
}

最新更新