Laravel 通过不同的方法发送相同的通知

Laravel send same notification via different methods

我正在尝试通过不同的通知方法->notify() 同一类型的不同用户。 例如:我有 TicketCompleted 通知,它的 via() 方法包含:return ['mail', 'database'];。我还实现了 toArray()toMail() 两种方法。所以我想做的是:

具有角色 Accountant 的模型 Client 只能通过 toArray() 方法得到通知;

具有角色 Contact 的模型 Client 只能通过 toEmail() 方法得到通知;

如何实现?

您可以在 via() 中 return 不同的值:

public function via($notifiable)
{
  if ($notifiable->role === 'Accountant') {
    return ['database'];
  } else if ($notifiable->role === 'Contact') {
    return ['mail'];
  }

  // default for all other clients
  return [];
}

如果您对其他型号使用相同的通知,您还必须检查 $notifiable 的 class。