Уведомления Laravel 5, запускаемые при добавлении в базу данных с помощью толкателя
Я решил внедрить уведомления в реальном времени в мое приложение.
Уведомления должны появляться при определенных событиях, большинство из которых должно запускаться при обновлении таблиц в базе данных.
Чтобы это происходило в режиме реального времени, я в настоящее время использую бесплатную учетную запись с pusher, и я готов обновиться, если и когда приложение масштабируется.
Однако я довольно растерялся относительно того, как запускать события Laravel 5 при обновлении таблицы.
В настоящее время у меня есть триггеры в базе данных, которые добавляют записи в notifications
таблица, когда когда-либо обновления сделаны для определенных таблиц. В идеале, если бы запись была добавлена сюда, я бы запускал событие Laravel 5, а это, в свою очередь, использовало бы толчок для мгновенной отправки уведомления.
Кто-нибудь может предложить мне направление или хороший учебник?
По сути, мне нужна ясность в отношении того, где лучше всего проверить, чтобы обновления были успешно внесены в базу данных. События Laravel могут быть вызваны каждый раз, когда вызывается метод ->save(), но в случае уведомлений эта таблица обновляется на основе триггеров базы данных, поэтому никакой код не релевантен.
2 ответа
Предполагая, что когда вы говорите триггеры базы данных, вы имеете в виду сохранение событий Laravel, а не фактические триггеры базы данных, вы можете сделать что-то вроде этого:
class Notification extends Model {
public static boot() {
parent::boot();
static::created(function(Notification $notification) {
event(new PusherEvent());
});
}
}
class OtherModel extends Model {
public static boot() {
parent::boot();
static::updated(function(OtherModel $model) {
Notification::create();
});
}
}
OtherModel
Класс представляет собой представление всех других моделей в вашем приложении, которые имеют этот триггер для создания уведомления. Однако, если ваш триггер является фактическим триггером базы данных, это не сработает, и я рекомендую вам перейти к красноречивому способу создания триггера.
Недавно я проводил семинар по созданию приложений Laravel в реальном времени с Pusher в Laracon EU. Упражнения на семинаре (связанные с разделом "Уведомления" и выше) расскажут вам, как можно интегрировать Pusher через библиотеку мостов или встроенную программу Pusher Event Broadcaster (в Laravel 5.1 и выше).
Он не охватывает взаимодействия с базой данных, но очень краткий обзор обычной стратегии запуска уведомления:
- Взаимодействовать с базой данных
- Убедитесь, что взаимодействие было успешным
- Запустить событие через Pusher
- Получить событие на клиенте
- Показать уведомление