TL; DR;
Переименуйте свой атрибут $user
в $admin
.
Explaination
Laravel добавит некоторую модель, только когда вы определите Привязка модели маршрута шаблон:
Ваш маршрут должен принимать параметр с тем же именем атрибута, который вы пытаетесь внедрить, например:
PATCH admin\{user}
И метод вашего контроллера должен иметь атрибут с таким же именем:
public function update(User $user) { /** **/ }
Поскольку вы определяете свой маршрут с помощью метода Route::resource('admin', ...)
, laravel автоматически назовет этот параметр с тем же именем ресурса, поэтому ваш маршрут будет выглядеть так:
PATCH admin\{admin}
Вот почему Laravel не может внедрить модель должным образом, поэтому он внедряет просто пустую модель (поведение внедрения зависимостей по умолчанию - создание экземпляра класса и его внедрение).
Таким образом, атрибут вашего метода должен называться $admin
:
public function update(Request $request, User $admin) { /** **/ }
Таким образом, Laravel может видеть, что этот параметр должен быть заполнен моделью, загруженной с идентификатором, указанным в URL.