首页 > 解决方案 > 观察者不运行 save() 和 retrieved() 方法

问题描述

我有一个加密数据的观察者

<?php

namespace App\Observers;

use App\TinkoffSetting;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Contracts\Encryption\DecryptException;

class TinkoffSettingsObserver
{
    public function saving(TinkoffSetting $settings)
    {
        try {
            $settings->account = Crypt::encryptString($settings->account);
            $settings->token = Crypt::encryptString($settings->token);
        } catch (DecryptException $e) {
            //
        }
    }

    public function retrieved(TinkoffSetting $settings)
    {
        try {
            $settings->account = Crypt::decryptString($settings->account);
            $settings->token = Crypt::decryptString($settings->token);
        } catch (DecryptException $e) {
            //
        }
    }
}

和存储所有数据的模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\TinkoffSettingsObserver;

class TinkoffSetting extends Model
{   
    public static function boot()
    {
        self::observe(TinkoffSettingsObserver::class);
        parent::boot();
    }
}

当我运行 dd(1); 在任何观察者的方法中,我都没有在屏幕上看到任何变化。Observer 不加密和解密数据。你能帮我找出问题吗?

标签: laravelooplaravel-5eloquent

解决方案


问题出在目录中。我的 Observer 在 App\Observers 中,但我使用它,因为它在 App 目录中。


推荐阅读