在Laravel文档中,它指出:
使用通知外观
或者,您可以发送 通过通知外观进行通知。这主要是有用的 当您需要向多个应通知实体发送通知时 例如一组用户。要使用立面发送通知, 将所有可通知实体和通知实例传递给 发送方法:
Notification::send($users, new InvoicePaid($invoice));
因此,我正在控制器中执行此操作:
public function index()
{
$subscribers = Subscribers::all();
Notification::send($subscribers, new NewVacancy($subscribers));
}
这是我的通知课
class NewVacancy extends Notification implements ShouldQueue
{
use Queueable;
public $subscriber;
public function __construct( $subscribers)
{
$this->subscriber = $subscribers;
}
public function toMail($notifiable)
{
return (new MailMessage)->view(
'mail.new-vacancy',
['uuid' => $this->subscriber->uuid]// This fails as $subscriber is a collection
);
}
....
问题在于,在NewVacancy
类中,传入的$subscriber
是所有订户的完整集合,而不是所发送的单个通知。
现在,我知道我可以对$subscribers
进行循环并每次触发Notification::send()
,但这使使用Facade的起点变得难以理解。
总体目标是向所有$subscribers
发送电子邮件,并能够使用刀片模板传递唯一的订户数据。
答案 0 :(得分:0)
我发现您可以通过传递到$notifiable
方法中的toMail()
实体访问当前用户。
public function toMail($notifiable)
{
return (new MailMessage)->view(
'mail.new-vacancy',
['uuid' => $notifiable->uuid]
);
}
答案 1 :(得分:0)
请注意,$ notifiable代表正在被通知的用户对象。
$user_id = $notifiable->id;