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