Eloquent destroy() 没有删除数据库中的行 - Laravel 5.6

Eloquent destroy() isn't deleting row in db - Laravel 5.6

我正在尝试在我的网站上创建一个功能来删除数据库中的新闻文章行,但它似乎不起作用。这是我的路线和控制器:

路线:

    Route::get('/admin/news/delete/{id}', 'NewsController@destroy');

Controller:
public function destroy(News $id)
    {
        News::destroy($id);
        return redirect('/admin/news')->with('status', 'News successfully deleted.');
    }

它 returns 带有成功消息,但该行从未在数据库中删除。我错过了什么?

由于您正在使用 route model binding$id 已经包含一个 News 实例(不是 id)。

您或许应该重命名它:

Route::get('/admin/news/delete/{news}', 'NewsController@destroy');

public function destroy(News $news)
{
    $news->delete();
    return redirect('/admin/news')->with('status', 'News successfully deleted.');
}

此外,建议删除数据时使用POST请求。