В документах 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()
, но это лишает смысла использовать фасад для начала.
Общая цель - отправлять электронные письма всем $subscribers
с возможностью передачи уникальных данных о подписчике с использованием шаблона блэйда.