Laravel отправляет одно и то же уведомление разными способами

Я пытаюсь ->notify() обращаться к разным пользователям одного и того же типа с помощью разных методов уведомления. Например: у меня есть TicketCompleted уведомление, а его via() метод содержит: return ['mail', 'database'];. У меня также реализованы оба метода toArray() и toMail(). Итак, я пытаюсь сделать следующее:

Модель Client с ролью Accountant следует уведомлять только с помощью метода toArray();

Модель Client с ролью Contact должна быть уведомлена только методом toEmail();

Как этого добиться?


person Petyor    schedule 08.10.2020    source источник


Ответы (1)


Вы можете вернуть разные значения в via():

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

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

Если вы используете такое же уведомление для других моделей, вам также необходимо проверить класс $notifiable.

person Thomas    schedule 08.10.2020