Как передать свои данные в очередь Queue Laravel 5.3?

427
16 апреля 2017, 02:57

Как мне передать свои данные в очередь Queue что бы при обработке очереди в методе handle() - производились операции над ними? Пробую кидать как в примере но данные мои только из последней очереди показывает, тоесть если элемент в очереди 1 то все хорошо, но если больше то только последний $my_data выводится.

class SendReminderEmail extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $my_data;
public function __construct($my_data)
{
  $this->my_data = $my_data;
}
public function handle()
{
  echo $my_data;
}
}
Answer 1

На примере отправки письма, в контролере:

        $data['template'] = 'emails.message';  
        $data['to'] = config('mail.notification.address');
        $data['subject'] = $request->input('topic');
        $data['email'] = $request->input('email');
        $data['topic'] = $request->input('topic');
        $data['body'] = $request->input('body');
        $job = (new SendEmailJob($data))->onQueue('email');
        dispatch($job);

В задаче

class SendEmailJob extends Job
{
    /**
     * @var array
     */
    protected $data;
    /**
     * SendEmailJob constructor.
     * @param array $data
     */
    public function __construct(array $data)
    {
        $this->data = $data;
    }
    /**
     * @return mixed
     * @throws \Exception
     */
    public function handle()
    {
        $data = $this->data;
        $body = view($data['template'], $data)->render();
        try{
            $transport = \Swift_SmtpTransport::newInstance(config('mail.host'), config('mail.port'), config('mail.encryption'))
                ->setUsername(config('mail.username'))
                ->setPassword(config('mail.password'));
            $mailer = \Swift_Mailer::newInstance($transport);
            $message = \Swift_Message::newInstance($data['subject'])
                ->setFrom([config('mail.from.address') => config('mail.from.name')])
                ->setTo([$data['to']])
                ->setBody($body,'text/html');
            return $mailer->send($message);
        }
        catch(\Exception $e){
            throw new \Exception($e->getMessage());
        }
    }
}
READ ALSO
Парсинг строки по дате PHP

Парсинг строки по дате PHP

Помогите распарсить строку по датеПоступает текст где в начале каждого сообщения указана дата

305
Не могу узнать размер файла из браузера

Не могу узнать размер файла из браузера

Есть форма, после ввода в форму адрес сайта выполняется кодЯ хочу узнать размер файла в браузере через filesize()

240
Перенос строки в PHP

Перенос строки в PHP

Господа, не работает перенос строки в php модуле mailОн тупо пишет в одну строчку, выдавая тег переноса в теле письма

240
PDO работает не так как я думаю

PDO работает не так как я думаю

Господа не могу понять что не так

213