0

在我的 Laravel 5.3 应用程序中,我使用了几个 Eloquent 模型事件(主要是creating)。直到一周前,他们工作正常,但突然到今天,我注意到他们似乎都不再开火了。

通过框架进行调试表明它们确实都添加到了 Dispatcher::listeners 数组中,但是我找不到应该逐步执行并实际运行它们的代码。将die()命令放在事件回调中什么都不做,表明它们没有真正触发,而且我尝试的任何方法似乎都没有让它们工作。

这是其中一个的示例(这个是一个特征,但我使用的是特征和直接模型的混合):

public static function bootUuidModel() { // On create, generate and assign a UUID static::creating(function (Model $model) { $model->setAttribute(self::getUuidFieldKey(), Uuid::uuid4()->toString()); }); }

有人对为什么这些突然不运行有任何想法吗?我出于各种目的在各种模型中使用它们,但它们似乎都没有运行。最近有没有其他人使用该框架遇到过这些问题?

提前致谢

- 更新 -

好的,所以经过更多调查后,我发现问题是用户对象由于某种原因在 Laravel 的 DatabaseServiceProvider 启动之前启动。出于某种原因,DatabaseServiceProvider::boot() 是事件调度程序被静态分配给模型的地方。因此,用户对象中的任何引导都不会向调度程序注册事件,因为调度程序还不存在。我自己没有启动 User 对象,有谁知道 Laravel 为什么会这样做?

4

0 回答 0