2017-01-13 9 views
1

100フォロワーを指定すると、完了したら通知が送信されます。問題は80のうち、電子メールのみの通知を希望します。もう1つは20です。それは私が2つの異なる通知を使用する必要が意味しています。このように呼び出します:Laravel 5.3 - 異なるユーザーコレクションの単一の通知ファイル?

のみメールチャネルを持ち、その後、
Notification::send($emailOnlyUsers, new TodoCompletedEmail($todo)); 

:唯一のSMSチャネルを有している

Notification::send($smsOnlyUsers, new TodoCompletedSms($todo)); 

を?または、1つのファイル内の異なるユーザーの異なるチャネルを処理するために両方のチャネルが一緒にリストされているTodoCompleted Notificationファイルに$emailOnlyUsers$smsOnlyUsersというロジックを持つことは可能ですか?このような何か:

$user->notify(new TodoCompletedEmail($todo)); 

Laravelの通知は、ユーザーの渡されたコレクションを見込んでいるため(このような状況で実際にそこにある私はむしろ別のチャンネルを一つのファイルにそれを行うだろうので、私は聞いて、私は私ができるとは思いません2つのユーザーコレクション)、より多くのチャンネル/異なるコレクションが可能であり、同じTodoCompleted通知の各チャンネル/ユーザーコレクションの新しい通知ファイルを作成する必要があります。誰かが単一のファイルでそれを持つことが可能であるかどうか、もしそうであれば、誰かに光を当てることができますか?

答えて

1

このようなことはどうですか?でその後

foreach($users as $user) 
    $user->notify(new TodoCompleted($todo)); 

あなた

private $todo; 

/** 
* Create a new notification instance. 
* 
* @param $todo 
*/ 
public function __construct($todo) 
{ 
    $this->todo = $todo; 
} 

/** 
* Get the notification's delivery channels. 
* 
* @param mixed $notifiable 
* @return array 
*/ 
public function via($notifiable) 
{ 
    // Change "prefer_sms" to whatever logic you're using to determine if the user should be sent sms or email. 
    if($notifiable->prefers_sms) 
     return ['sms', 'database']; 

    return ['mail', 'database']; 
} 
+0

は素晴らしい作品TodoCompletedクラス、ありがとう:) – Wonka

関連する問題