Laravel 5 使用推送器添加数据库时触发的通知

Laravel 5 notifications triggered on database additions using pusher

我决定在我的应用程序中实现实时通知。

通知需要发生在某些事件上,其中大部分事件需要在数据库更新 table 时触发。

为了让它实时发生,我目前正在使用带有推送器的免费帐户,如果应用程序扩展,我愿意升级。

但是我很迷茫如何让 Laravel 5 事件触发 table 的更新。

目前我在数据库中有触发器,当对某些 table 进行更新时,它会将记录添加到 notifications table。理想情况下,每当在此处添加记录时,我都会触发 Laravel 5 事件,这又会使用推送器即时发送通知。

谁能给我指导或好的教程?


我基本上想弄清楚在何处最好地测试是否已成功对数据库进行更新。 Laravel 每次调用 ->save() 方法时都可以投射事件,但在通知的情况下,table 根据数据库触发器进行更新,因此没有相关代码。

我最近 运行 Building Real-Time Laravel Apps with Pusher workshop at Laracon EU. The workshop exercises (linked to above and with a section on Notifications) 将带您了解如何通过桥接库或内置的 Pusher Event Broadcaster(在 Laravel 5.1 及更高版本中)集成 Pusher .

它不包括数据库交互,但触发通知的正常策略的快速总结是:

  1. 与数据库交互
  2. 确保交互成功
  3. 通过 Pusher 触发事件
  4. 在客户端接收事件
  5. 显示通知

假设当你说数据库触发器时,你的意思是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 class 表示您的应用程序中具有此触发器以创建通知的所有其他模型。但是,如果您的触发器是一个实际的数据库触发器,这将不起作用,我建议您转到 eloquent 创建触发器的方式。