尝试在Laravel 5.4上编辑用户时发生错误
我开始使用laravel进行项目,并且在尝试编辑用户时遇到问题。尝试在Laravel 5.4上编辑用户时发生错误
它总是返回“QueryException”,就像我没有传递用户ID一样,但是我使用了默认的布局,因此我的URL类似于/ users/1/edit。
这是我的路线是如何定义的:
Route::get('/', function(){
return view('welcome');
});
Route::resource('users', 'CtrUsers');
这是我得到的编辑URL的方式:
href="{{route('users.edit', $user)}}"
(在$用户设置一个foreach内循环)
这是我的编辑功能:
public function edit(User $user)
{
return view('users.edit', compact('user'));
}
奇怪的是,当我输入URL/users/edit/1(最终使用de ID)时,IT停止返回QueryException,但返回“NotFoundHttpException”。
没有人有这个问题?
我发现最好的解决办法是重建我的迁移改变我的表ID的只是“ID”的名字,becouse我注意到错误是百达,因为系统未找到名为usr_id任何列。
变化控制器
public function edit($id)
{
$user = User::findOrFail($id);
return view('users.edit', compact('user'));
}
编辑再次
public function edit($id)
{
$user = User::where('usr_id',$id)->findOrFail();
return view('users.edit', compact('user'));
}
我试过这个,现在我得到了另一个错误: http://imgur.com/a/PzChk 我相信这个错误是关于一个user.id定义在我不知道的地方,因为我在我的迁移和模型中定义了User.usr_id之类的用户ID。 –
嘿我编辑我的答案希望它现在能运作 –
现在我得到了这个http://imgur.com/nsFdMu8 –
的问题是,你已经使用了路由模型绑定变量的名称。两个变量名称:路线上的另一个变量名称和动作参数中的另一个必须匹配。
您可以使用php artisan route:list
命令检查路线信息。
所以,你有两个选择,要么像的路线改变users
变量名user
:
Route::resource('user', 'CtrUsers');
OR
您可以从user
变量名中,如操作参数更改为users
:
public function edit(User $users)
{
return view('users.edit', compact('user'));
}
欲了解更多信息:
你需要检查你的重写规则/漂亮的url设置 – Gunnrryy
可以请你发布错误信息 –
正确的URL是/ users/1/edit。为什么你在href的route()函数中传递$ role?这是一个用户的实例,你称它为$角色?或者它是一个角色?编辑方法期望用户 –