2017-07-29 137 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

相關問題