模型启动事件未在 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()
.
移动它解决了问题。
在 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()
.
移动它解决了问题。