首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用Laravel创建记录后发送通知

在用Laravel创建记录后发送通知
EN

Stack Overflow用户
提问于 2017-11-20 21:10:19
回答 2查看 2.4K关注 0票数 1

是否可以在创建记录后发送通知?

我有一个游戏模型和一个用户模型,两者通过标记为captain_id和organizer_id的字段连接(它们都是用户ID的引用)。现在我想要的是能够向两个用户发送关于新创建的游戏模型的通知。

我一直在到处搜索,而且我会继续这样做,但我在帖子/教程/视频方面并没有发现太多类似于我的困境。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-20 21:18:26

如果您使用的是Laravel5.5,我会强烈建议您进入Laravel事件文档。查看模型类(照明/数据库/雄辩/模型),当创建一个对象时,它会触发一个事件(特别是fireModelEvent)。您可以做的是在特定的模型事件上注册一个通知处理程序,并让该处理程序发送您想要的通知(例如SMS、电子邮件、Slack等)。

当您想要处理特定事件时,我将执行以下操作(我在我的示例中使用了用户模型):

  1. 运行php artisan make:event UserCreated
  2. uses Notifiable添加到用户模型中。
  3. 在用户模型上创建一个变量。 受保护的$dispatchesEvents = 'created‘=>用户创建::class;
  4. 在新创建的事件中实现broadcastOn()函数,以执行您希望它做的事情。
票数 2
EN

Stack Overflow用户

发布于 2017-11-20 21:27:03

以乔恩的回答为基础,举个例子。您可以在模型上添加一个启动方法,该方法将触发模型事件(比如保存/创建)。

代码语言:javascript
复制
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将是保存的模型的实例,因此您可以访问它的属性。如果您的模型扩展了基本模型或类似的内容,请确保在静态::saved()之前添加父级::boot()。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47401110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档