наблюдатель люмена не работает над красноречивой моделью - PullRequest
1 голос
/ 04 марта 2020

Я использую люмен 5.5. Я пытаюсь вызвать наблюдателя при обновлении / удалении модели. Когда я попробовал это с моделью пользователя, наблюдатель не звонил. Когда я сделал это с событиями, все работает отлично. Это даже не показывает никаких ошибок.

Вот мой код:

AppServiceProvider. php

....
use App\Models\User;
use App\Observers\UserObserver;
...

public function boot() {
    User::observe(UserObserver::class);

}

App \ Models \ User. php

...
    public static function changeCustomerStatus(int $customerID): int{
        $customer = self::where([
                'id'        => $customerID,
                'user_type' => app('config')->get('user_type.CUSTOMER')
            ])
            ->first();

        if ($customer) {
            $customer->status = $customer->status == app('config')->get('status.ACTIVE') ? app('config')->get('status.DEACTIVE') : app('config')->get('status.ACTIVE');

            if ($customer->save()) {
                return $customer->status;
            }

            return 0;
        }   
        else 
            return 0;
    }
...

Приложение \ Наблюдатели \ UserObserver. php

<?php

namespace App\Observers;

use App\Models\User;

class UserObserver {

    public function updated(User $user) {
        if ($user->status === app('config')->get('status.DEACTIVE')) {
            app('log')->info('updated');
        }
    }


public function saved(User $user) {
        if ($user->status === app('config')->get('status.DEACTIVE')) {
            app('log')->info('saved');
        }
    }


    public function deleted(User $user) {
        app('log')->info('deleted');
    }
}

Я даже сделал composer dump-autoload. Но не повезло

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

У Люмена нет моделей-наблюдателей, как у Laravel. Я согласен с использованием событий или реализации ваших пользовательских наблюдателей. Если вы выбрали go с последним, вот сообщение, которое может помочь. https://link.medium.com/ZHsJwJuvC5

0 голосов
/ 04 марта 2020

Люмен не имеет функции наблюдения. Вместо этого вы можете использовать События или создать пользовательский наблюдатель и вызывать его функции из своего кода.

Читайте документы здесь - События

...