Как исправить undefined method observe()?

Не могу понять, где сидит ошибка:
<?php

namespace App\Models\Users;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;

class User extends Authenticatable
{
    use HasFactory, Notifiable;

    protected $fillable = [];
    protected $guarded = [];

    protected $hidden = [
        'password',
        'remember_token',
    ];

    public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = Hash::make($value);
    }

    public function setPhoneAttribute($value)
    {
        $this->attributes['phone'] = preg_replace('/[^0-9]/', '', $value);
    }
}

<?php

namespace App\Observers\Users;

use App\Models\Users\User;

class UserObserver
{
    public function creating(User $user)
    {
        dd($user);
    }

<?php

namespace App\Providers;

use App\Models\Users\User;
use App\Observers\Users\UserObserver;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        UserObserver::observe(User::class);
    }
}


На выходе ошибка:
63ba795a172fb114443053.png
Пути вроде верные, может глаз уже "замылился".
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
@romazhan
Возможно, вы используете устаревшую версию Laravel. В старых версиях Laravel использовался метод `observe` для регистрации наблюдателя модели. В более новых версиях этот метод был удален и заменен на использование сервис-провайдера.

Чтобы исправить эту ошибку, вам нужно будет удалить строку `UserObserver::observe(User::class)`; из файла `AppServiceProvider` и заменить ее на следующую:
User::observe(UserObserver::class);

После этого необходимо будет перезапустить сервис, который реализует автозагрузку сервис-провайдеров (обычно это команда `php artisan serve`).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы