[英]Model observer is not firing while updating
我在尝试使用观察者时遇到一个问题,即它不会仅在更新的情况下触发观察者。 在其他情况下它工作正常..
我对此进行了一些研究,并找到了一些解决方案,例如直接从 model 调用更新方法,而不是在存储库中,但不幸的是,它对我不起作用。 我找到的解决方案: https://github.com/laravel/framework/issues/11777#issuecomment-170388067
用户观察者class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
}
}
这是我的AppServiceProvider
:
// First try
$user = User::findOrFail($id);
$user->update($data);
// Second try
User::findOrFail($id)->update($data);
我在我的 controller 中调用了update
方法,如下所示:
array [
"nationality_id" => "1"
"birth_date" => "2013-05-26"
"gender" => "1"
"job_title" => "Pariatur Sit provideeee"
"salary" => "5100"
]
这是我的$data
数组的示例:
array [ "nationality_id" => "1" "birth_date" => "2013-05-26" "gender" => "1" "job_title" => "Pariatur Sit provideeee" "salary" => "5100" ]
Laravel 在触发更新之前检查 model 是否已实际更改,因此请确保在保存或更新之前更改 model。
此外,仅当您直接更新 model 时才会触发更新事件。
这意味着这将触发一个事件:
$user = User::findOrFail($id);
$user->update($data);
虽然这样的事情不会
User::where('id', $id)->update($data);
这是设计使然,因为使用更新查询可以一次更新数百万行,因此为所有行触发事件是不现实的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.