【问题标题】:Model booted events are not firing in Laravel 7模型启动事件在 Laravel 7 中没有触发
【发布时间】:2020-10-31 11:32:29
【问题描述】:

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

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

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

我发现该模型确实按预期启动。但是,实际上并没有触发已注册的模型事件。

如果我将它们放入观察者中,它们确实会出于某种原因工作。但是,观察者只处理过去时态事件,例如创建、保存、删除……而不是创建、保存、删除等。

我是否遗漏了 L7 中的新配置?

【问题讨论】:

    标签: laravel laravel-7


    【解决方案1】:

    我的粗心错误。

    我将Relation::morphMap() 定义放在AppServiceProvider::register() 中,而不是AppServiceProvider::boot()

    移动它解决了这个问题。

    【讨论】:

      【解决方案2】:

      试试这个:

      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;
              });
         
          }
      }
      

      【讨论】:

      • 你试过这个答案吗?
      • 我完全使用了代码。这在以前的 Laravel 版本中一直有效,但不再适用于我。
      • 在您的模型中使用此方法的目的是什么?
      • 当模型处于创建、保存等过程中时,我需要执行基于特定事件的代码。
      猜你喜欢
      • 1970-01-01
      • 2017-02-19
      • 2016-12-31
      • 2020-06-21
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      相关资源
      最近更新 更多