Уведомления 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 и выше).

Он не охватывает взаимодействия с базой данных, но очень краткий обзор обычной стратегии запуска уведомления:

  1. Взаимодействовать с базой данных
  2. Убедитесь, что взаимодействие было успешным
  3. Запустить событие через Pusher
  4. Получить событие на клиенте
  5. Показать уведомление
Другие вопросы по тегам