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

标签 php mysql laravel-5 pusher

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

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

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

但是,我对如何在表更新时触发 Laravel 5 事件感到非常困惑。

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

有人可以给我指导或好的教程吗?

<小时/>

我本质上想清楚在哪里最好地测试是否已成功对数据库进行更新。每次调用 ->save() 方法时都可以强制转换 Laravel 事件,但在通知的情况下,该表会根据数据库触发器进行更新,因此没有相关代码。

最佳答案

假设当你说数据库触发器时,你指的是 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 类代表应用中具有此触发器来创建通知的所有其他模型。但是,如果您的触发器是实际的数据库触发器,则这将不起作用,我建议您转向创建触发器的 Eloquent 方式。

关于php - Laravel 5 使用推送器在数据库添加时触发通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591113/

相关文章:

javascript - 当通过 $argv 传递 JSON 并包含特殊字符时,json_decode 返回 NULL

mysql - Elastic Search 使用 River-jdbc 与远程 mysql 服务器同步数据

php - 我应该对所有表使用用户的外键吗?

PHP:通过德语数组回显日期会导致错误

php - 如何解析 SOAP XML?

php - 如果另一个字段为假,如何验证一个字段必须为真

php - Laravel 5.7 中的 mysqli multi_query

php - 对数据库中的密码进行加密

php - PDO 语法错误或使用内爆的访问冲突

php - RouteCompiler 中的 Laravel DomainException 变量名称在路由模式中不能超过 32 个字符