簡體   English   中英

Laravel-通過role_name編輯角色用戶

[英]Laravel - Edit role user by role_name

我已經為我的用戶創建了一個編輯頁面,除了更改角色之外,其他所有操作都可以進行。 我做了一個選擇菜單,該菜單通過一個foreach循環顯示所有角色。 它顯示用戶的當前角色,如下所示:

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

我希望能夠通過role_name而不是ID來更改角色。 老實說,我不知道在哪里看。 我該如何實現?

表單通過的控制器如下所示:

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 }}可以正常工作。

提前致謝!

假設role_name是唯一的。 在您的發布方法中,您可以執行以下操作-

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

根據您的評論,將此添加到您的用戶模型上-

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

希望能幫助到你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM