如何在Laravel的默认AuthController中分配角色

时间:2016-06-19 03:26:03

标签: php laravel-5.2 user-roles

我想在Laravel 5.2默认的AuthController注册期间为用户分配一个角色,那么如果有人想到怎么办呢? 这里我有三个表用户角色 user_roles  感谢

我的迁移: users_migration:

public function up()
{
   Schema::create('users', function (Blueprint $table) {
     $table->increments('id');
     $table->string('name');
     $table->string('email')->unique();
     $table->string('password', 60);
     $table->rememberToken();
     $table->timestamps();
  });
}

USER_ROLE:

public function up()
{
   Schema::create('user_roles', function (Blueprint $table) {
     $table->increments('id');
     $table->integer('user_id');
     $table->integer('role_id');
     $table->timestamps();
   });
}

角色迁移:

 public function up()
{
   Schema::create('roles', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name', 60);
    $table->text('description');
    $table->timestamps();
   });
 }

模特:

用户模型:

  .
  .
  .
public function roles()
{
    return $this->belongsToMany('App\Role', 'user_roles','user_id','role_id');
}

角色模型:

class Role extends Model
   {
      protected $primaryKey = 'r_id';

     public function users()
   {
       return $this->belongsToMany('App\User',    'user_roles','role_id','user_id');
   }
}

1 个答案:

答案 0 :(得分:0)

这是我的所作所为,但你可以随心所欲地改变它。

我将覆盖AuthController中registerUsers trait的register()

public function register(Request $request)
{
  //your logic

  $roles = $request->input('role_id');

  $method = $roles instanceof Role ? 'save' : 'saveMany';
  //you can use foreach too
  $user->roles()->$method($roles);

}

如文档中所述,您可以使用$user->roles()->attach($roleId)将角色附加到用户