Здравствуйте.
В контроллере выполняется действие А. Вставляется некая запись в базу данных. В принципе никаких event'ов вызывать нет необходимости, ибо данное действие не влечет за собой никаких других действий и выполняется только в одном месте. Но мне надо уведомить пользователя на фронтенде об этом. При использовании broadcasting из Notifications нет возможности указать имя канала, поэтому этот вариант мне не подходит (написание своего драйвера пока не рассматриваю). Использую Events. Создал сам Event. Event Listener пока даже не создан. В Event'е включил broadcasting в необходимый приватный канал.
Теперь мне нужно использовать Notifications в базу данных. Писать те же данные, что уходят на фронтенд через сокеты.
Будет делаться выборка пользователей. Этим пользователям будут улетать уведомления в БД:
Notification::send($users, new InvoicePaid($invoice));
Плюс будет осуществляться отправка уведомлений в мессенджеры.
Теперь вопрос - куда помещать эту логику? Можно вызвать в самом event'е или создать event listener и вызвать там?
И еще момент - не могу понять когда использовать Event'ы, а когда Notifications?
Если начинать с Event'ов, то там есть возможность broadcasting'а, но только мне стоит захотеть уведомления, то в работу включаются Notifications. А там снова имеем broadcasting в качестве одного из каналов уведомлений. И там, и там одинаковый функционал. Причем есть у них и не пересекающийся функционал. Те же Уведомления можно слать в разные каналы (broadcasting, database, ...). Вопрос в том, почему бы не реализовать этот функционал в events? Вы скажете: "А зачем, используй прямо в event'ах уведомления и все." Но тогда зачем в events прилепили broadcasting, если можно было использовать все те же Notifications?