【发布时间】:2017-10-18 13:34:17
【问题描述】:
在我的用户表中,我有一列名称已验证,数据类型为布尔值,默认值为“false”,但是,当任何特定用户的该列值更改为“true”时,我想触发一个事件,所以我可以根据该事件发出通知吗? 有什么想法可以实现吗?
【问题讨论】:
标签: php laravel events notifications eloquent
在我的用户表中,我有一列名称已验证,数据类型为布尔值,默认值为“false”,但是,当任何特定用户的该列值更改为“true”时,我想触发一个事件,所以我可以根据该事件发出通知吗? 有什么想法可以实现吗?
【问题讨论】:
标签: php laravel events notifications eloquent
您可以向模型事件添加挂钩并执行检查。下面的代码在您的模型中。您可能希望也可能不希望将用户对象与事件一起传递。如果您要发送通知,这可能会派上用场。
public static function boot()
{
parent::boot();
static::updated(function($user) {
if ($user->verified == true) {
event(new UserVerified($user));
}
});
}
【讨论】:
我的想法是在更新目标表时创建触发器。更新后,您可以将记录插入另一个表EVENT。
您的代码可以定期从 EVENT 表中轮询以处理这些更新。
如果您使用的是 Oracle DB,Oracle queues 将非常有用。
【讨论】:
您可以使用 Attribute Events 包在模型属性更改时触发事件:https://github.com/jpkleemans/attribute-events
class User extends Model
{
protected $dispatchesEvents = [
'verified:true' => UserVerified::class,
];
}
【讨论】: