Laravel направляет вызов markAsAdopted
на ваш update()
(или, возможно, create()
в зависимости от того, как у вас установлены маршруты) вместо метода markAsAdopted()
.Это, в свою очередь, вызов вашего класса PetsRequest (или того, что вы называли своим классом проверки).
Скорее всего, он приходит как POST и, возможно, игнорирует метод PATCH, таким образом, перенаправляется на update()
.Вы можете сделать несколько вещей - переместить метод исправления выше в файле Routes и протестировать, выбрав POST.Если это работает, вы знаете, что это проблема.Это всего лишь тест - вы сломаете POST других домашних животных, появляющийся под ним в файле Routes, поэтому не забудьте поменять его обратно :)
Я обычно вообще пропускаю патч, поскольку я запускаюв аналогичные вопросы.Обычно я просто создаю POST-маршрут со специальным именем (например, Route::post('/petsMarkAsAdopted/{id}', 'PetsController@markAsAdopted');
) и открываю форму с URL-адресом этого специального маршрута.
Если вы действительно хотите сохранить PATCH, выполните тест с более высоким размещением, описанный выше.и вы можете использовать blade-сервер для установки метода после открытия формы, например, так:
@method('PATCH')
Редактировать: Как отмечалось в комментариях, вышеизложенное исправляет маршрутизацию, но тамЭто другая проблема в вашем методе контроллера теперь, когда мы можем получить к нему доступ.Возьмите table()
и просто позвоните модели, чтобы получить питомца, который вам нужен.Я выделил призыв для ясности:
$pet = Pet::where('id', $id)->first();
$pet->update(['is_adopted' => true]);