如何在laravel 5.4中强制删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel 5.4中强制删除相关的知识,希望对你有一定的参考价值。

我创建了一个带有软删除和强制删除选项的用户管理系统。但是,我无法使用强制删除选项。

路线:

Route::post('users/{user}/delete', 'UserController@forcedelete');

相关的控制器代码:

public function forcedelete(User $user)
{
     $user->forceDelete();
     return redirect('users/trash');
}

视图代码:

<a href="{{ url('users/'.$user->id.'/delete') }}" 
   onclick="event.preventDefault(); document.getElementById('delete').submit();">
    <i class="fa fa-trash-o btn btn-danger btn-xs"></i>
</a>

<form id="delete" action="{{ url('users/'.$user->id.'/delete') }}" 
      method="POST" style="display: none;">
    {{ csrf_field() }}
    {{ method_field('DELETE') }}
</form>

我得到的错误是

 MethodNotAllowedHttpException in RouteCollection.php line 233:

为什么它不起作用,我该如何解决?

答案

尝试将此路由置于其他用户路由或用户资源路由之上。此外,您尝试使用路径模型绑定与软删除模型,这将无法正常工作。您需要使用id并手动删除它。

public function forcedelete($id)
{
    User::where('id', $id)->forceDelete();
    return redirect('users/trash');
}

编辑:同时从表单中删除{{ method_field('DELETE') }},因为定义的路由方法是post。

以上是关于如何在laravel 5.4中强制删除的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.4 中检索软删除的用户帖子

从 url laravel 5.4 中删除公共

从 laravel 5.4 中删除 public

在 Laravel 5.4 (Eloquent ORM) 中自动删除 NESTED 相关行

Laravel 5.4 从相关表中删除表行和行

在 Laravel 5.4 的查询生成器中添加 lists() 方法