[英]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.