2017-11-25 8 views
0

ユーザーの編集ページを作成しましたが、役割の変更以外はすべて機能します。私はforeachループを通してすべての役割を表示する選択メニューを作った。Laravel - role_nameで役割のユーザーを編集

<div class="form-group row"> 
    <div class="col-md-4"> 
     <label for="Datum">Rol:</label> 
    </div> 
    <div class="col-md-8"> 
    <select class="form-control" id="Datum" name="role"> 
     <option selected>{{ $user->role->role_name }}</option> 
     @foreach($roles as $role) 
     <option>{{ $role->role_name }}</option> 
     @endforeach 
    </select> 
    </div> 
    </div> 

IDの代わりにrole_nameでロールを変更したいと考えています。私は正直にどこを見るか分からない。どうすればこれを達成できますか?フォームは次のようになります経由する

コントローラ:データベースで

public function updateUser(Request $request, $id) 
{ 

    $user = User::find($id); 
    $user->update($request->all()); 
    $user->save(); 

    return back()->with('flash', 'Account is geupdate'); 
} 

は、ユーザーがROLE_IDを持っており、ロールテーブルでは、すべての役割を持っています。したがって、関係は次のとおりです。ユーザーはロールを持ち、ロールは多数のユーザーを持ちます。これらの関係はモデルに設定されます。だから{{ $user->role->role_name }}はうまく動作します。

ありがとうございます!

答えて

1

ロール名は一意です。あなたのポストの方法では、モデル -

public function setPasswordAttribute($password) 
{ 
    $this->attributes['password'] = bcrypt($password); 
} 

ユーザーにこれを追加し、あなたのコメントを1としてfollowing-

public function updateUser(Request $request, $id) 
{ 
     $role = Role::where('role_name','=',$request->input('role_name'))->first(); 
     $user = User::find($id); 
     $user->role_id = $role->id; 
     $user->save(); 

     return back()->with('flash', 'Account is geupdate'); 
} 

を行うことができ、それが働いた:)

+0

感謝を役に立てば幸い!このようにパスワードを変更したときにも: '$ user-> password = $ request-> password;'もう一度ハッシュする方法は?パスワードを変更すると、パスワードは再びハッシュ化されます。 –

+0

私は私の答えを編集しました、今見てください。この後、新しいユーザーを保存または更新するためにコントローラをハッシュすることについて心配する必要はありません。 – Sohel0415

+0

それは今作動する!ありがとう! –

関連する問題