【问题标题】:Can Eloquent model observer access model data that are being affected by the event?Eloquent 模型观察者可以访问受事件影响的模型数据吗?
【发布时间】:2015-01-19 16:33:25
【问题描述】:

我正在尝试为 Eloquent 模型创建一个 observer,以作为该模型更改的记录器。我不确定模型中将哪些参数传递给观察者的方法。如果参数不包含更新模型的实例,是否有其他方法可以绕过它而无需重新定义模型类并覆盖所需的方法?

class UserObserver{
    public static function saved($user){
        Activity::create([
            "activity-name" => "save",
            "user" => $user->id
        ]);
    }    

}

【问题讨论】:

  • 由于整个模型已通过,您应该能够访问模型具有的任何方法和属性
  • 整个模型通过了吗?
  • 我想是的。使用 dd 试试看,你会看到。
  • 是的,你可以为所欲为。但是,您应该使用 github.com/jarektkaczyk/revisionablegithub.com/VentureCraft/revisionable 之类的东西
  • @ITroubs,无论更新什么型号,我都只会得到“0”。

标签: php laravel eloquent observer-pattern


【解决方案1】:

我发现模型实际上是通过的,我的错误是没有在Activity模型中的fillable数组中添加user属性。

通常,当我的应用程序尝试更新未包含在fillable 数组中的字段时,我会遇到异常,但这次我没有。有人知道为什么吗?

【讨论】:

  • 当属性为guarded 时,您将获得MassAssignementException。否则,如果它只是不可填充,则在调用$model->fill($attributes) 时会被忽略(create 也是如此)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 2012-02-11
相关资源
最近更新 更多