Laravel 5.3-不同用户集合的单一通知文件



给定100跟随者,一旦我完成一个todo,就会触发一个通知。问题是他们中的80只想要电子邮件通知,其他20只想要短信通知。这是否意味着我需要使用两个不同的通知呼叫,如下所示:

Notification::send($emailOnlyUsers, new TodoCompletedEmail($todo));

只有邮件通道,然后:

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

哪个只有短信频道?或者,是否可以在TodoCompleted Notification文件中使用$emailOnlyUsers$smsOnlyUsers的逻辑,其中两个通道一起列出,以便在一个文件中为不同用户处理不同的通道?类似这样的东西:

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

我之所以这么问,是因为我宁愿在一个不同频道的文件中进行,但我认为我做不到,因为Laravel的Notification期望通过一个用户集合(在这种情况下,实际上有两个用户集合),但是更多的频道/不同的集合是可能的,并且必须为相同的CCD_ 6通知的每个频道/用户集合创建新的通知文件将是非常糟糕的。有人能说明是否有可能将其放在一个文件中吗?如果有,如何?

这样的东西怎么样?

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

然后在您的TodoCompleted课堂

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'];
}

最新更新