Php 为什么不删除Laravel 5.6表中的用户
我正在使用Laravel 5.6,并以管理员身份从用户表中删除用户。我有以下UserController功能来删除表记录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'); } 我的用
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'=>'用户。删除'
。现在试试。