2015-05-02 83 views
3

有沒有人試過Entrust用戶角色&權限在Laravel 5?Laravel 5和Entrust。如何在同一時間保存用戶和附加角色

我想添加和保存用戶並將角色同時添加到它中。這裏是我的代碼

 $role = Role::where('name','=','admin')->first(); 
    $user = new User(); 
    $user->name = Input::get('name'); 
    $user->email = Input::get('email'); 
    $user->password = Hash::make(Input::get('password')); 
     if($user->save()){ 
      $user->attachRole($role); 
      return redirect('dashboard/users')->with('success-message','New user has been added'); 
     } 

$user->attachRole($role);不會工作,但它的作品在我的databaseSeeder卻沒有關於我UserController的。

回答

1

我也使用「Entrust」來管理我的用戶權限,但我使用create語法來存儲我的用戶。然後,我用「的角色() - >連接」,像這樣:

$user = User::create($this->userInputs($request)); 
$user->roles()->attach($request->input('role')); 
0

我使用所提供的驗證設置附帶Laravel 5用我自己的調整,所以我只是不中Registrar.php如下:

public function create(array $data) 
{ 
    // Create a new user, and assign it to 'new_user' 
    $new_user = User::create([ 
     'username' => $data['username'], //<< Specific to my own db setup 
     'email'  => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

    // Initiate the 'member' Role 
    $member = Role::where('name', '=', 'member')->first(); 
    // Give each new user the role of 'member' 
    $new_user->attachRole($member); 

    // Return the new user with member role attached 
    return $new_user; //<<Or whatever you do next with your new user 
} 

您只需確保在文件頂部使用App \ Role。對我很好。

3

我認爲你有這個問題,因爲你永遠不會保存在數據庫中。 嘗試這樣的事情。

$role = Role::where('name','=','admin')->first(); 
$user = new User(); 
$user->name = Input::get('name'); 
$user->email = Input::get('email'); 
$user->password = Hash::make(Input::get('password')); 
$user->save() 
$user->attachRole($role); 
return redirect('dashboard/users')->with('success-message','New user has been added'); 

當然這種方法只適用於使用laravel的自動遞增功能自動遞增模型ID的情況。如果您正在使用類似uuids的字段來唯一標識您的字段,則還應在模型中包含public $incrementing = false;

確保在模型中包含HasRole特質。

而且看看Akarun的回答,因爲它也將work.The創建方法,創建一個新的實例,也保存到數據庫,所以你不需要$user->save()

相關問題