Laravel一次增加多个工作岗位


Laravel add multiple Jobs at a time

对于用户操作,我需要向他的所有订阅者发送电子邮件。在这种情况下,电子邮件应该排队等待稍后发送。

我使用了jobs,它可以一次接受单个用户实例(遵循Laravel Doc),并在job表中插入一个job。这很好。

现在,由于订阅者数量不止一个,如何在作业表中一次添加多个用户实例或作业?在Laravel 5.2中,我如何实现这一点?

我不确定阅读您的问题是否遗漏了什么,但如果您正在实现自己的作业队列,难道您不能更改构造函数以接受用户的集合(数组),并在handle方法中简单地运行foreach来给他们发电子邮件吗?

Laravel文档中的示例被修改为接受用户集合而不是单个用户:

<?php

namespace App'Jobs;
use App'User;
use App'Jobs'Job;
use Illuminate'Contracts'Mail'Mailer;
use Illuminate'Queue'SerializesModels;
use Illuminate'Queue'InteractsWithQueue;
use Illuminate'Contracts'Queue'ShouldQueue;
class SendReminderEmail extends Job implements ShouldQueue
{
  use InteractsWithQueue, SerializesModels;
protected $users = [];
/**
 * Create a new job instance.
 *
 * @param  User  $user
 * @return void
 */
public function __construct($users) //Pass in an array of your user objects
{
    $this->users = $users;
}
/**
 * Execute the job.
 *
 * @param  Mailer  $mailer
 * @return void
 */
public function handle(Mailer $mailer)
{
  foreach($users as $currentUser){
      $mailer->send('emails.reminder', ['user' => $currentUser], function ($){
        //code here
    });
    $currentUser->reminders()->create(...);
   }
  }
}