【问题标题】:Laravel 5.3 Observer not triggering on updating eventLaravel 5.3 观察者未触发更新事件
【发布时间】:2017-05-30 09:44:06
【问题描述】:

我已经为我的模型创建了 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 模型的可填充中。

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

【问题讨论】:

  • 看起来$object-&gt;update($data) 不会触发updatingupdated 事件。试试$object-&gt;prop = 'val'; $object-&gt;save()
  • 您决定触发保存事件,而不是更新。

标签: php laravel-5.3 observers laravel-events


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2021-09-26
    相关资源
    最近更新 更多