我正在尝试在Laravel中发送一个包含工作类的电子邮件,关键是我需要跟踪邮件发送的通知。我有一个名为“Notifications”的表,其中包含列状态和lastUpdated(这些是关于此问题的表)。
为了更新Notifications表的行,我需要知道该行的ID。 我试图在作业类中更改作为参数发送的模型的参数值。此模型是“通知”
我的问题是,一旦从类内部更改了作业类中的参数,它们是否会持续到下一个调用?显然不是这样的。如果无法做到这一点,有人可以建议任何解决方法吗?
class SendReminderEmail extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public function __construct($lastNotification)
{
$this->lastNotification = $lastNotification;
}
//NULL means it's the first time the job has been called
protected $lastNotification;
public function handle(Mailer $mailer)
{
$mailer->send('user.welcome', ['username' => 'Luis Manuel'], function($message)
{
$message->from('mymail@mymail.com', 'Luis');
$message->to('mymail@mymail.com', 'mymail@mymail.com');
$message->subject('Subject here!');
});
if(count($mailer->failures()) > 0)
{
if($this->lastNotification == null)
{
$this->lastNotification = new Notification;
$this->lastNotification->status = false;
$this->lastNotification->lastUpdated = Carbon::now();
}
else
{
$this->lastNotification->status = false;
$this->lastNotification->lastUpdated = Carbon::now();
}
$this->lastUpdated->save();
}
}
}
答案 0 :(得分:0)
我是如何解决的:
在控制器中调度作业之前,我创建了Notification模型,将其保存,然后将其作为参数传递给作业类。
public function __construct($notification)
{
$this->notification = notification;
}
public function handler(Mailer $mailer)
{
/*
* Some extra code abover here
*/
$this->notification->lastUpdated = Carbon::now();
}
在工作班中:
capture
它就像一个魅力!