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