У меня есть этот метод контроллера:
<?php
public function ignore($id)
{
Log::info($id);
$st = Servicetype::destroy($id);
Log::info($st);
// $st->delete();
return response(null, Response::HTTP_OK);
}
Кроме того, этот маршрут в Api.php:
Route::delete('/servicetypelinking/{id}/ignore', 'PlanningCenter\Controllers\ServiceTypeLinkingController@ignore');
Я вызываю маршрут из метода Vue.js, который выглядиткак это:
ignore(id) {
console.log('In the ignore method: ' + id);
this.mute = true;
window.axios.delete('/api/servicetypelinking/' + id + '/ignore').then(({ response }) => {
console.log(response);
let index = this.serviceTypes.findIndex(serviceType => serviceType.id === id);
this.serviceTypes.splice(index, 1);
this.mute = false;
});
}
Сторона Vue работает, а тип сервиса "удален" на экране.В базе данных ничего не происходит.
Когда я запускаю это для id = 16, я получаю это в laravel.log, который показывает, что правильный метод и правильный идентификатор верны:
[2018-11-26 17:27:42] local.INFO: 16 <-- This is passed in
[2018-11-26 17:27:42] local.INFO: 0 <-- Result of the destroy operation
Я также могу сделать Servicetype :: find (16) -> toArray () для этой модели, и он извлекает данные и отображает их в журнале.
Если я создаю веб-маршрут к этому методу контроллера исделать с идентификатором, удаление происходит в базе данных.По какой-то причине, даже несмотря на то, что идентификатор попадает в метод, вызов метода уничтожения в модели ничего не делает.
Есть ли здесь какая-то секретная вещь Laravel?Любая помощь приветствуется.
Дополнительная информация: Похоже, что-то не так на стороне Vue / Javascript.В консоли нет ошибок, запрос отправляется правильно (используя мой оригинал, а также предложенный с параметром _delete.) Я убедился, что он попадает в метод.Я также жестко закодировал идентификатор в метод destroy (), и он до сих пор не удаляет запись.Также нет ошибок в журнале ошибок laravel.Все должно работать, но это не так.
Решение: Я действительно не нашел решения проблемы, поэтому я обошел ее.Использование
Servicetype::destroy($id);
ничего не сделало.Но, используя:
DB::table('servicetypes')->where('id', $id)->delete();
работал.Я надеялся использовать softdeletes, но обнаружил некоторые другие проблемы с этим и использование построителя запросов, поэтому в конце я сделал небольшое перекодирование, чтобы проблема «ушла».Я могу еще покопаться в этом, когда у меня будет время.Это было странное поведение.