尝试从数据库中删除数据,这就是我为此使用控制器和路由的方式:
控制器
public function articleDelete($id)
{
return $article = Article::destroy($id);
// return response()->json([
// "article" => $article,
// "message" => "Deleted Successfully"
// ]);
}
api
Route::group(['prefix' => 'v1'], function(){
/* fetch */
Route::get("/articles", "Api\ArticlesController@allArticles");
Route::get("/articles/{id}", "Api\ArticlesController@singleArticle");
/* add new & delete */
Route::post("articles/add", "Api\ArticlesController@newArticle");
Route::delete("articles/delete/{id}", "Api\ArticlesController@articleDelete");
});
这是我在 vue组件中的方法:
methods: {
deleteArticle(article, id){
axios.delete("api/v1/articles/delete/" + article.id).then(response => {
let index = this.articles.indexOf(article);
this.articles.splice(index,1);
console.log(response.data);
})
},
}
当我添加新文章时没有问题。但是,当我尝试删除文章时,会出现错误。首先在控制台中,未定义ID .../api/v1/articles/delete/undefined
,这是错误。
此路由不支持GET方法。支持的方法: POST。
我已经在使用post了,为什么一直说“不支持get方法”。我没有在路线上使用get。并且我清除了 route:clear 并检查,发布的路由没有问题。
我在这里想念的是什么?谢谢。
此外,我在循环数据时会提供关键道具。
<tr :key="item.id" v-for="(item, index) in fetchArticle">
<td>{{item.entry}}</td>
<td>{{item.company_name}}</td>
<td><button type="button" class="btn btn-danger" @click="deleteArticle(item.id)" :id="item.id">delete</button></td>
</tr>
我不明白为什么未定义ID部分。
答案 0 :(得分:1)
//change route code
Route::delete("articles/delete/{id}", "Api\ArticlesController@articleDelete");
//change vue code
axios.delete("api/v1/articles/delete/" + article.id).then(response => {
我是初学者,您可以尝试我的方法,希望对您有所帮助。
答案 1 :(得分:1)
我解决了这个问题。不过这是我的错误。
我将路线信息更改为删除
Route::delete("articles/delete/{id}", "Api\ArticlesController@articleDelete");
在vue组件中进行了一些更改。
deleteArticle(id){
axios.delete("api/v1/articles/delete/" + id).then(response => {
let index = this.articles.indexOf(id);
this.articles.splice(index,1);
console.log(response.data);
})
},
还有事件按钮,我如下更改了它。
<td><button type="button" class="btn btn-danger" @click="deleteArticle(item.id)" :id="item.id">delete</button></td>
我希望它对其他人也有帮助...