Laravel 5.3 Observer在更新事件时不会触发

时间:2017-01-15 13:03:23

标签: php laravel-5.3 observers laravel-events

我为我的模型创建了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模型的可填写内容。

所以我的问题是,我做错了什么?

2 个答案:

答案 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命令