laravel 5 不删除用户记录

Posted

技术标签:

【中文标题】laravel 5 不删除用户记录【英文标题】:laravel 5 not deleting user record 【发布时间】:2015-09-01 12:53:41 【问题描述】:

我想做的只是从数据库中删除一个用户。

我的路线是如下所示的资源:

Route::resource('users', 'UserController');

所以这应该意味着我的 UserController 中的销毁操作应该是我的代码的位置。

所以我的控制器操作如下:

public function destroy($id)

    $user = User::find($id);
    $user->delete();
    return Redirect::back();

现在当我点击删除按钮时,它链接到 /users/destroy/4

它应该找到 id 为 4 的用户,然后将其删除。

相反,我得到了错误

NotFoundHttpException in RouteCollection.php line 145:

编辑:

@foreach ($users as $user)
   <tr>
     <td> $user->id </td>
     <td> $user->username </td>
     <td>$user->HWID</td>
     <td>$user->name</td>
     <td class="tools">
       <a href="users/$user->id/edit" class="user-edit"><i class="fa fa-pencil-square-o fa-lg"></i></a>
       <a href="users/destroy/$user->id" class="user-delete"><i class="fa fa-trash fa-lg"></i></a>
     </td>
   </tr>
@endforeach

【问题讨论】:

嗨 Matthew,您能添加您的 HTLM 表单吗? @ThomasSnijder 我现在添加了 html 【参考方案1】:

我不知道是否可以通过您在表格中指定的链接直接从数据库中删除用户。

我的解决方法是首先将用户指向控制器中的显示功能。并为用户提供用户自身信息的概览。

此页面包含一个带有 DELETE 方法的表单。在用户信息下方,我放置了一个删除按钮,该按钮将使用 DELETE 方法将表单提交到 URL:/users/4

导致链接:/users/destroy/4 不是有效的资源链接。

有关资源控制器链接的更多信息,请参阅此链接:Resource Controller

我自己的应用程序的示例删除/显示页面:

!! Form::model($ManagementUser, array('method' => 'DELETE', 'url' => 'admin/management/' . $ManagementUser->id, 'role' => 'form')) !!
    <div class="box-body">
        <div class="form-group">
            <label>Name</label>
            !! Form::text('name', Input::old('name'), array('class' => 'form-control', 'placeholder' => 'Name', 'name' => 'name', 'disabled')) !!
        </div>
        <div class="form-group">
            <label>E-mailaddress</label>
            !! Form::text('email', Input::old('email'), array('class' => 'form-control', 'placeholder' => 'E-Mail', 'name' => 'email', 'disabled')) !!
        </div>
        !! Form::submit('Delete', array('class' => 'btn btn-block btn-default')) !!
    </div>
!! Form::close() !!

【讨论】:

【参考方案2】:

在资源控制器中,销毁操作由 DELETE 方法处理。不是 GET 方法。当前,您正在使用未注册的 GET 方法访问路由。以下命令将帮助您了解您注册的资源路由。

php artisan route:list

获取

<a href="users/destroy/$user->id" class="user-delete"><i class="fa fa-trash fa-lg"></i></a>

DELETE(您可以使用表单和DELETE方法删除记录,如下所示)

<form action=" route('users.destroy', $user->id) " method="POST">
    <input type="hidden" name="_method" value="DELETE" />
    <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" />
    <button><i class="fa fa-trash fa-lg"></i></button>
</form>

参考

Resource Controller

Method Spoofing

【讨论】:

以上是关于laravel 5 不删除用户记录的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.3 中删除哈希进程

如何在 laravel 5.7 中删除用户? [复制]

Laravel:删除用户前提示

用户从Laravel 5.2中的帐户删除后没有注销的原因

如何正确删除 Laravel 5.3 中用户表列中的“唯一”列属性?

使用 AJAX 在 Laravel 5.3 中删除记录