2015-05-02 42 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()

相关问题