我为我的模型创建了Observer以更新相关数据:
<?php
namespace App\Observers;
use App\User;
class UserObserver
{
public function updating(User $user)
{
$data = $user->getAttributes();
dd($data);
$user->worker->fill($data['worker']);
$user->push();
}
}
并将其添加到我的模型中:
protected static function boot()
{
parent::boot();
parent::observe(UserObserver::class);
}
但更新模型时更新方法不会触发:
$user = User::byUsername($username)->first();
$user->update($request->all());
我在请求实例中有worker.rate_per_hour
值,并将其添加到User
模型的可填写内容。
所以我的问题是,我做错了什么?
答案 0 :(得分:1)
我认为你可以在这里找到解决方案:Model Observer, not working for update?
或在这里: https://github.com/laravel/framework/issues/11777#issuecomment-170384117
p / s:我将查询从->where()
编辑为->find()
并解决了我的问题:)
答案 1 :(得分:0)
在 AppServiceProvider 中注册观察者:
目录:/app/Providers/AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class); // here
}
}
注意:请确保您cleared cache
并触发了composer dumpauto
命令