2016-11-21 14 views

回答

2

我已经看了十月份的rainlab用户类。

用户类别通过属于多个关系与组类关联。

public $belongsToMany = [ 
     'groups' => ['RainLab\User\Models\UserGroup', 'table' => 'users_groups'], 
     'address' => [ 
      '\codework\users\models\Address', 
      'table'=>'codework_users_user_address', 
      'order'=>'addr' 
     ] 
    ]; 

所以,当你将用户添加到任何一组,请确保您有该组已经创建到你的数据库。

表名user_groups:这将包含可分配用户的所有组。

表名users_groups:这是一个数据透视表,它包含用户和组表之间的关系。

希望这将有助于:)

+0

我知道数据透视表。但我没有找到像$ user-addUsergroup('groupname')这样的函数或属性;我知道我可以直线更新(表格.. bla bla)。我确信有简单的方法。和大多数“十月”的方式 – aleXela

4

我认为你可以扩展用户模型添加addUserGroup方法是这样;

public function boot() 
{ 
    User::extend(function($model) { 
     $model->addDynamicMethod('addUserGroup', function($group) use ($model) { 
      if ($group instanceof Collection) { 
       return $model->groups()->saveMany($group); 
      } 

      if (is_string($group)) { 
       $group = UserGroup::whereCode($group)->first(); 

       return $model->groups()->save($group); 
      } 

      if ($group instanceof UserGroup) { 
       return $model->groups()->save($group); 
      } 
     }); 
    }); 
} 

所以你可以添加组用户;组模型实例,模型集合和模型代码的字符串。

+0

谢谢 测试。试图找到buildin模式 – aleXela

+0

嗨,我用字符串参数测试你的代码,它的工作。 – Meysam

+0

不是。因为你编辑:) 谢谢@Meysam – Surahman