我创建了一个新的服务提供商来观察模型(App\Providers\EloquentEventServiceProvider.php
),如下所示:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Staff;
use App\Oberservers\StaffObserver;
class EloquentEventServiceProvider extends ServiceProvider
{
public function boot()
{
Staff::observe(StaffObserver::class);
}
}
我还将其添加到配置文件(config\app.php
):
return [
...
'providers' => [
...
App\Providers\EloquentEventServiceProvider::class,
...
]
...
]
观察者方法无法正常工作。如果我将Staff::observe(StaffObserver::class);
移到AppServiceProvider
类,则可以正常工作。显然,这是让我的服务提供商启动的问题。我已经尝试过php artisan config:clear
,php artisan clear-compiled
,composer update
和composer dump
,但是都没有工作。非常感谢您的帮助。
答案 0 :(得分:1)
您的Oberservers
名称错误,如laravel文档observers laravel doc中所述,应该为Observers
,这意味着您的所有观察者都应位于App\Observers
之内,而不是{{ 1}}。
所以这里有2个解决方案:
1-如果要保留名称空间App\Oberservers
,则应在下面运行这2条命令,因为由于我们创建了新文件夹App\Oberservers
,文件的自动加载可能无法正常工作:
Oberservers
2-第二种解决方案是将实际的# Autoloading of files
composer dump
# Configure the cache
php artisan config:cache
文件夹重命名为Oberservers
,这样,文件的自动加载就可以正常工作。