Laravel模型$events未被触发

4

我正在创建一个新应用程序,当文章被创建时,将显示一个通知。我已经尝试使用事件和侦听器。

我的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');
}

这里我做错了什么?

我的问题是当创建新文章时,没有创建新的通知。我甚至没有收到任何错误信息。

1个回答

5
据我所知,在Laravel 5.5中,该属性被命名为$dispatchesEvents,而不是$events。您是否在使用此版本?
这是您从旧版迁移时需要做的更改之一:
模型$events属性 您模型上的$events属性应重命名为$dispatchesEvents。由于许多用户需要定义事件关系,这导致与旧属性名称发生冲突,因此进行了此更改。
参考链接:https://laravel.com/docs/5.5/eloquent#events

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接