2016-11-21 13 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