2017-07-29 141 views
0

我开始使用laravel进行项目,并且在尝试编辑用户时遇到问题。尝试在Laravel 5.4上编辑用户时发生错误

它总是返回“QueryException”,就像我没有传递用户ID一样,但是我使用了默认的布局,因此我的URL类似于/ users/1/edit。

QueryException Error

这是我的路线是如何定义的:

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”。

NotFoundHttpException

没有人有这个问题?

+0

你需要检查你的重写规则/漂亮的url设置 – Gunnrryy

+1

可以请你发布错误信息 –

+1

正确的URL是/ users/1/edit。为什么你在href的route()函数中传递$ role?这是一个用户的实例,你称它为$角色?或者它是一个角色?编辑方法期望用户 –

回答

0

我发现最好的解决办法是重建我的迁移改变我的表ID的只是“ID”的名字,becouse我注意到错误是百达,因为系统未找到名为usr_id任何列。

0

变化控制器

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')); 
    } 
+0

我试过这个,现在我得到了另一个错误: http://imgur.com/a/PzChk 我相信这个错误是关于一个user.id定义在我不知道的地方,因为我在我的迁移和模型中定义了User.usr_id之类的用户ID。 –

+0

嘿我编辑我的答案希望它现在能运作 –

+0

现在我得到了这个http://imgur.com/nsFdMu8 –

0

的问题是,你已经使用了路由模型绑定变量的名称。两个变量名称:路线上的另一个变量名称和动作参数中的另一个必须匹配。

您可以使用php artisan route:list命令检查路线信息。

所以,你有两个选择,要么像的路线改变users变量名user

Route::resource('user', 'CtrUsers'); 

OR

您可以从user变量名中,如操作参数更改为users

public function edit(User $users) 
{ 
    return view('users.edit', compact('user')); 
} 

欲了解更多信息:

https://laravel.com/docs/master/routing#route-model-binding

相关问题