模型启动事件未在 Laravel 7 中触发

Model booted events are not firing in Laravel 7

在 Laravel 7 中,文档显示我们可以这样做:

class User extends Model
{
    protected static function booted()
    {
        static::created(function ($user) {
            // Do something...
        });
    }
}

这在 Laravel 的早期版本中一直运行良好。但是,在新安装 v7 之后,我无法触发任何模型事件。

我追踪到该模型确实在按预期启动。但是,没有注册的模型事件实际触发。

如果我将它们放入观察器中,它们会出于某种原因起作用。但是,观察者只处理创建、保存、删除等过去式事件...而不是创建、保存、删除等

我是否缺少 L7 中的新配置?

试试这个:

class User extend Model {
     public static function boot()
     {
        parent::boot();
        static::creating(function($model)
        {
            $user = Auth::user();           
            $model->created_by = $user->id;
            $model->updated_by = $user->id;
        });
   
    }
}

我的粗心错误。

我把 Relation::morphMap() 定义放在 AppServiceProvider::register() 而不是 AppServiceProvider::boot().

移动它解决了问题。