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

问题描述

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

具有角色Client的模型Accountant仅应通过toArray()方法通知

具有角色Client的模型Contact仅应通过toEmail()方法通知

如何实现?

解决方法

您可以在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的类。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...