2016-04-07 71 views
0

對於用戶操作,我需要發送電子郵件給他的所有用戶。在這種情況下,電子郵件應該排隊等待稍後發送。Laravel一次添加多個作業

我使用過的作業可以一次接受單個用戶實例(接下來是Laravel Doc),它將作業插入作業表中。這可以。

現在,由於用戶數量多於一個,我如何在作業表中一次添加多個用戶實例或作業?在Laravel 5.2中,我怎樣才能做到這一點?

回答

0

我不知道是否通過閱讀你的問題而在這裏丟失了某些東西,但是如果你正在實現自己的作業隊列,你不能改變構造函數來接受用戶的集合(數組)處理方法只需運行一個可以通過電子郵件發送的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(...); 
    } 
    } 
} 
+0

感謝。這工作,我對喬布斯收集對象有點困惑。你的回答使我清楚。 – Sovon

+0

沒問題!很高興我能幫上忙。 –