Php 创建不在观察者中触发的模型事件

Php 创建不在观察者中触发的模型事件,php,laravel,events,eloquent,observers,Php,Laravel,Events,Eloquent,Observers,我有以下文件: ModelObserverProvider.php <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Models\User; use App\Models\Profile; use App\Observers\UserObserver; use App\Observers\ProfileObserver; class ModelObserverProvide

我有以下文件:

ModelObserverProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use App\Models\User;
use App\Models\Profile;
use App\Observers\UserObserver;
use App\Observers\ProfileObserver;

class ModelObserverProvider extends ServiceProvider
{
    public function boot()
    {
        User::observe(UserObserver::class);
        Profile::observe(ProfileObserver::class);
    }

    public function register()
    {}
}
<?php

namespace App\Observers;

use App\Models\User;

class UserObserver
{
    public function creating(User $user)
    {
        dd('Creating...');
        // Hash the users password when creating.
        $user->password = bcrypt($user->password);

        // Create a new profile for the user.
        $user->profiles()->create(['name' => 'guest-' . time()]);
    }
}
试试这个
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Models\User;
use App\Models\Profile;
use App\Observers\UserObserver;
use App\Observers\ProfileObserver;

class AppServiceProvider extends ServiceProvider
{
  /**
    * Bootstrap any application services.
    *
    * @return void
    */
    public function boot()
    {
       User::observe(UserObserver::class);
       Profile::observe(ProfileObserver::class);
    }

    /**
      * Register any application services.
      *
      * @return void
      */
      public function register()
      {}
}

因此,事实证明这是一个自定义名称间距,将所有内容替换回默认的应用程序名称空间解决了问题,我的观察者现在正在启动。@SeriousJelly如果这真的解决了问题,看起来您的服务提供商没有注册,正如我之前所说的。您可以运行
php artisan cache:clear
php artisan config:clear
composer dumpauto
命令来解决此问题。每次创建服务提供商时,都应该在
config/app.php
上注册它。@Chay22 OP将其添加到配置中,但似乎Laravel没有加载它是因为缓存数据。服务提供商正在加载,我在服务提供商内部添加了dd(),它正在加载,这是由于名称空间,更改回默认的应用程序名称空间。解决了所有问题后,我的服务提供商和观察员现在可以工作了