从数据库中删除数据,“不支持GET方法”

时间:2019-06-27 02:21:57

标签: laravel laravel-5 vuejs2

尝试从数据库中删除数据,这就是我为此使用控制器和路由的方式:

控制器

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部分。

2 个答案:

答案 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>

我希望它对其他人也有帮助...