Laravel 9点击用户按钮获取目标用户iduser的方法求助
解决Laravel 9中获取目标用户ID的问题
问题根源
你写的$userID = User::find('iduser');是错误用法:find()方法需要传入具体的用户ID值,而不是字段名。当你传入字符串'iduser'时,数据库会自动将其转换为数字0,所以你得到了id为0的用户结果。
正确实现步骤
要获取点击按钮对应的目标用户ID,需要前后端配合传递参数:
1. 前端传递用户ID
在用户列表的操作按钮中,把目标用户的iduser传递到后端:
- 用链接跳转(GET请求):
<a href="/admin/toggle-role/{{ $user->iduser }}" class="btn">切换角色</a>
- 用表单提交(POST请求,更安全):
<form action="/admin/toggle-role" method="POST"> @csrf <input type="hidden" name="user_id" value="{{ $user->iduser }}"> <button type="submit" class="btn">切换角色</button> </form>
2. 后端接收并查询用户
根据前端的传参方式,在控制器里接收ID并查询:
- 如果是路由参数(GET方式):
首先定义路由:
// routes/web.php Route::get('/admin/toggle-role/{userId}', [UserController::class, 'toggleRole']);
然后控制器方法:
// app/Http/Controllers/UserController.php public function toggleRole($userId) { // 根据ID查询目标用户 $targetUser = User::find($userId); dd($targetUser); // 现在会得到正确的用户数据 }
- 如果是表单传参(POST方式):
定义路由:
// routes/web.php Route::post('/admin/toggle-role', [UserController::class, 'toggleRole']);
控制器方法:
// app/Http/Controllers/UserController.php public function toggleRole() { $userId = request()->input('user_id'); $targetUser = User::find($userId); dd($targetUser); }
额外提醒
- 确保你的
User模型对应的表中,主键字段是iduser,如果不是,需要在模型里指定:
// app/Models/User.php protected $primaryKey = 'iduser';
如果主键不是自增整数,还要加上public $incrementing = false;(根据你的表结构调整)。
内容的提问来源于stack exchange,提问作者Caroline Dorchies
相关产品推荐
相关产品推荐

