Laravel:如何在用户表中的特定列发生更改时触发事件?

时间:2017-05-18 16:06:49

标签: php laravel events notifications eloquent

在我的users表中,我有一个名为verified的列,数据类型为boolean,默认值为'false',但是,当任何特定用户的列值更改为'true'时,我想触发一个事件,所以我可以根据该事件发出通知吗? 我有什么想法可以实现这个目标吗?

3 个答案:

答案 0 :(得分:2)

您可以为模型事件添加一个钩子并执行检查。以下代码包含在您的模型中。您可能希望也可能不希望使用该事件传递用户对象。如果您要发送通知,这可能会派上用场。

public static function boot()
{
    parent::boot();

    static::updated(function($user) {
        if ($user->verified == true) {
            event(new UserVerified($user));
        }
    });
}

答案 1 :(得分:0)

我在想的是在更新目标表时创建触发器。更新后,您可以将记录插入另一个表EVENT

您的代码可以定期从EVENT表进行轮询以处理这些更新。

如果您使用的是Oracle DB,Oracle queues将非常有用。

答案 2 :(得分:0)

您可以使用“属性事件”包在模型属性更改时引发事件:https://github.com/jpkleemans/attribute-events

class User extends Model
{
    protected $dispatchesEvents = [
        'verified:true' => UserVerified::class,
    ];
}