Php 为什么不删除Laravel 5.6表中的用户

Php 为什么不删除Laravel 5.6表中的用户,php,mysql,laravel-5,controller,Php,Mysql,Laravel 5,Controller,我正在使用Laravel 5.6,并以管理员身份从用户表中删除用户。我有以下UserController功能来删除表记录 public function delete($id) { User::where('id', $id)->delete(); return redirect() ->back() ->with('info', 'User deleted successfully'); } 我的用

我正在使用Laravel 5.6,并以管理员身份从用户表中删除用户。我有以下UserController功能来删除表记录

public function delete($id)
{
    User::where('id', $id)->delete();

    return redirect()
              ->back()
              ->with('info', 'User deleted successfully'); 
}
我的用户数据显示在索引刀片文件中,并带有以下删除按钮:

<td>
    <a class="button is-outlined" 
      href="{{route('users.index', $user->id.'/delete/')}}" 
      onclick="return confirm('Are you sure to want to delete this record?')"
     >
        Delete
     </a>
</td>
http://localhost:8000/users?16/delete/     //16 is user id
但是现在,当我点击删除按钮时,javascript确认正在通过,并且在接受后仍然不会删除记录。URL更改如下:

<td>
    <a class="button is-outlined" 
      href="{{route('users.index', $user->id.'/delete/')}}" 
      onclick="return confirm('Are you sure to want to delete this record?')"
     >
        Delete
     </a>
</td>
http://localhost:8000/users?16/delete/     //16 is user id

如何解决此问题?

您可以尝试类似的销毁方法

User::destroy($id)

web.php
routes文件中,您传递了
{users}
,而不是传递了
{id}

Route::get('users/{id}/delete', [
    'uses' => '\App\Http\Controllers\UserController@delete',
])->name('user.delete');
在您的刀片视图中:

<td><a class="button is-outlined" href="{{route('users.delete',['id' => $user->id])}}" onclick="return confirm('Are you sure to want to delete this record?')" >Delete</a></td>`
将路线更改为:

Route::get('users/{id}/delete', [
    'as' => 'users.delete','uses' => '\App\Http\Controllers\UserController@delete',
]);
Route::get('users/{id}/delete', [
    'uses' => '\App\Http\Controllers\UserController@delete',
]);
更改以下行:

<td><a class="button is-outlined" href="{{route('users.index', $user->id.'/delete/')}}" onclick="return confirm('Are you sure to want to delete this record?')" >Delete</a></td>


将路线更改为:

Route::get('users/{id}/delete', [
    'as' => 'users.delete','uses' => '\App\Http\Controllers\UserController@delete',
]);
Route::get('users/{id}/delete', [
    'uses' => '\App\Http\Controllers\UserController@delete',
]);
然后检查数据库表中的用户是否已被删除。
如果没有,那么我认为这是数据库中的CI冲突,因为用户id是另一个表中的外键,所以不能直接删除它。

我会将您的
route.php文件更改为一种更简单的方法,有助于理解:

Route::get('users/{id}/delete', 'UserController@delete')
->where(['id', => '[0-9]+'])
->name('user.delete');
在上面的路由上,您已经确保它只接受
id
为数字的请求。此外,您还可以为路径命名,以简化代码结构,因此,如果以后更改它,您不必继续在表单中更改它

然后,表单中的路由生成也会更改它:

href="{{route('user.delete', ['id' => $user->id])}}"
在你的控制器上,你会改变

public function delete($id)
{
    $user = User::find($id);

    //Having a hold on your user model makes it able to also delete any other relationship it might have, if you so wish
    $user->delete();

    return redirect()
              ->back()
              ->with('info', 'User deleted successfully'); 
}

这是您的问题
用户?16/delete/
。注意
是,这是我的问题此处的名称结果?请注意删除按钮中的我的路线是否正确我的路线?是否正确,但结果相同。我的删除按钮路由正确吗?你能提供你的数据库模式吗?删除方法也按路由工作:路由::删除('users/delete/{users}','\App\Http\Controllers\UserController@delete');那有什么用?它如何回答这个问题?不要只是脱口而出代码。解释你自己!现在出现此错误消息路由[users.delete]未定义。(视图:C:\Users\Nalaka\Desktop\acxian\resources\views\Users\index.blade.php)@Muru修复了错误。将
'as'=>'用户更改为
'as'=>'用户。删除'
。现在试试。