Laravel删除不使用API​​路由

时间:2018-11-26 22:49:25

标签: laravel api vue.js routes destroy

我有这个控制器方法:

<?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中得到了它,它表明正确的方法和正确的ID是正确的:

[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(),它检索数据并将其显示在日志中。

如果我创建到此控制器方法的Web路由并使用ID进行获取,则删除将在数据库中进行。出于某种原因,即使id进入方法,在模型上调用destroy方法也无济于事。

这里有Laravel的秘密吗?任何帮助表示赞赏。

其他信息: 在Vue / javascript方面似乎没有任何错误。控制台中没有错误,该请求已正确发送(使用我的原始请求以及_delete参数建议的请求。)我已验证该方法是否正确。我也已经将ID硬编码到destroy()方法中,但它仍然没有删除记录。 laravel错误日志中也没有错误。一切都应该起作用,但事实并非如此。

解决方案:我没有真正找到解决问题的方法,所以我设法解决了这个问题。使用

Servicetype::destroy($id);

什么也没做。但是,使用:

DB::table('servicetypes')->where('id', $id)->delete();

工作了。我希望使用softdeletes,但与此同时发现其他一些问题,并使用查询生成器,因此最后我做了一些重新编码,以使问题“消失”。有空的时候我可能会再深入研究。这是奇怪的行为。

3 个答案:

答案 0 :(得分:0)

尝试一下:

axios.post('/api/servicetypelinking/' + id +  '/ignore', {_method: 'delete'})

答案 1 :(得分:0)

在控制器中:

Servicetype::find($id)->delete();

如果它不起作用,则需要使用$ id检查现有记录。

Log:info( Servicetype::find($id) );

如果为空–则记录ID错误。

答案 2 :(得分:0)

解决方案:我没有真正找到解决问题的方法,所以我设法解决了这个问题。使用

Servicetype::destroy($id);

什么也没做。但是,使用:

DB::table('servicetypes')->where('id', $id)->delete();

工作了。我希望使用softdeletes,但与此同时发现其他一些问题,并使用查询生成器,因此最后我做了一些重新编码,以使问题“消失”。有空的时候我可能会再深入研究。这是奇怪的行为。我相应地更新了说明。