2017-09-23 139 views
2

我正在创建一个新的应用程序,当创建一个文章时将显示一个通知。我尝试过使用事件和听众。

App\Article.php

... 

protected $events = [ 

    'created' => Events\ArticleWasPublished::class 

]; 

... 

App\Providers\EventServiceProvider.php

protected $listen = [ 
    'App\Events\ArticleWasPublished' => [ 
     'App\Listeners\NotifyUsers', 
    ], 
]; 

App\Events\ArticleWasPublished.php

... 

use App\Article; 

... 

{ 

    public $article; 

    public function __construct(Article $article) 
    { 
     $this->article = $article; 
    } 

... 

App\Listeners\NotifyUsers.php

use App\Notification; 

... 

public function handle(ArticleWasPublished $event) 
{ 
    Notification::create([ 
     'article_id' => $event->article->id, 
     'message' => 'A new Article was created' 
    ]); 
    var_dump('Something'); 
} 

我在这里做错了什么?

我的问题是,当一篇新文章创建一个新的通知没有得到创建。我甚至没有得到任何错误。

回答

2

据我所知,在Laravel 5.5中,该属性被命名为$ dispatchesEvents,而不是$ events。你在使用这个版本吗?

https://laravel.com/docs/5.5/eloquent#events

这是你需要做的,如果你是从旧版本迁移的变化之一:

型号$事件物业

的$事件财产上的模型应将其更名为 $ dispatchesEvents。由于大量的 用户需要定义事件关系,导致 与旧属性名称发生冲突,因此进行了此更改。

+0

是的,我正在使用Laravel 5.5。谢谢你的回答。它帮助我:)。我在laravel事件文档中搜索这个方法,但我找不到一个,只有手动收听的方法。 – Advaith