簡體   English   中英

Laravel一次添加多個作業

[英]Laravel add multiple Jobs at a time

對於用戶操作,我需要向他的所有訂閱者發送電子郵件。 在這種情況下,應將電子郵件排隊等待稍后發送。

我為此使用了作業,它一次可以接受一個用戶實例(緊隨Laravel Doc之后 ),它在作業表中插入了一個作業。 這可以。

現在,由於訂戶數不止一個,我如何在作業表中一次添加多個用戶實例或作業? 在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(...);
   }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM