Laravel 拉威尔事件没有开火?

Laravel 拉威尔事件没有开火?,laravel,laravel-5,laravel-5.2,laravel-events,Laravel,Laravel 5,Laravel 5.2,Laravel Events,我似乎无法运行任何已保存的事件处理程序 我试过这个: <?php namespace App\Providers; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends

我似乎无法运行任何已保存的
事件处理程序

我试过这个:

<?php

namespace App\Providers;

use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        'eloquent.saved: \App\Models\Company' => [
            '\App\Models\Company@hasSaved',
        ],
    ];

}
但当我拯救一家公司时,它不会运行

我尝试创建一个观察者:

<?php

namespace App\Providers;

use App\Models\Company;
use App\Observers\CompanyObserver;
use DB;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{

    public function register()
    {
        Company::observe(CompanyObserver::class);
    }
}
但这也永远不会发生

最后,我尝试将其添加到
EventServiceProvider

public function boot(DispatcherContract $events)
{
    parent::boot($events);

    $events->listen('eloquent.*', function() {
        dump(func_get_args());
    });
}
这确实触发了一系列随机事件,但它只是给我提供了模型实例——我不知道实际触发的是什么事件


发生了什么事?我只想知道我的
公司
什么时候存了钱。

我们走吧。问题是您使用了:

Company::observe(CompanyObserver::class);
AppServiceProvider的
register
方法中,您应该在
boot
方法中使用它。当您将此行移动到
boot
method(同类)时,它将毫无问题地工作。当您保存公司时,应启动
CompanyObserver的
saved
方法中的代码

protected $listen = [
    'eloquent.saved: \App\Models\Company' => [
        \App\Listeners\CompanySavedListener::class,
    ],
];
public function boot(DispatcherContract $events)
{
    parent::boot($events);

    $events->listen('eloquent.*', function() {
        dump(func_get_args());
    });
}
Company::observe(CompanyObserver::class);