创建记录后是否可以发出通知?
我有一个游戏模型和一个用户模型,两者通过标记为captain_id的字段和organizer_id(两者都是对用户ID的引用)连接。现在我想要的是能够向两个用户发送关于新创建的游戏模型的通知。
我一直在各处搜索,我会继续这样做,但我没有找到类似于我的困境的帖子/教程/视频,所以我希望此处有人遇到过类似的事情。< / p>
答案 0 :(得分:2)
如果您使用的是Laravel 5.5,我强烈建议Laravel Events documentation。查看Model类(Illuminate / Database / Eloquent / Model),当创建一个对象时,它会触发一个事件(特别是fireModelEvent)。您可以做的是在该特定模型事件上注册一个Notification处理程序,让该处理程序发出您想要的通知(即SMS,E-Mail,Slack等)
当您想要处理特定事件时,我会执行以下操作(我在示例中使用了User模型):
php artisan make:event UserCreated
uses Notifiable
添加到用户模型。在用户模型上创建变量。
protected $ dispatchesEvents = [ &#39;创建&#39; =&GT; UserCreated ::类 ];
在新创建的事件中实施broadcastOn()
功能,以执行您希望的操作。
答案 1 :(得分:1)
以Jon的回答为例。您可以在模型上添加一个引导方法,该方法将触发模型事件(如已保存/创建)。
protected static function boot(){
static::saved(function($thisModel){
if (($thisModel->wasRecentlyCreated == true) && ($thisModel->attributes['status'] == 1)){
$thisModel->send_created_mail($thisModel->id);
}
else{
if ($thisModel->isDirty('status')) {
$thisModel->send_status_mail($thisModel->attributes['status']);
}
}
});
}
$ thisModel将是正在保存的模型的实例,因此您可以访问它的属性。如果您的模型扩展了基本模型或类似的东西,请确保在static :: saved()
之前添加parent :: boot()