更改Laravel作业类

时间:2016-03-09 17:53:21

标签: php laravel laravel-4 laravel-5 jobs

我正在尝试在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();
        }       

    }
}

1 个答案:

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

它就像一个魅力!