Example #1
0
 public function run()
 {
     $total = [];
     foreach (Group::find()->all() as $key => $group) {
         $total[$group->name] = GroupClient::find()->where(['groups_id' => $group->id])->count();
     }
     return $this->render('groups/index', ['group' => new Group(), 'total' => $total]);
 }
 /**
  * edit particular client information 
  * @param  [type] $id [description]
  * @return [type]     [description]
  */
 public function actionEdit($id)
 {
     $client = $this->findModel($id);
     $groups = new Group();
     // find groups selecting
     $groups_clients = GroupClient::find()->where(['clients_id' => $id])->all();
     $selected = [];
     foreach ($groups_clients as $key => $value) {
         $selected[] = $value->group->id;
     }
     $groups->id = $selected;
     if ($client->load(Yii::$app->request->post()) && $client->validate()) {
         // get post variable of GroupClient
         $list_groups = Yii::$app->request->post()['Group']['id'];
         // groups is required
         if (!empty($list_groups)) {
             // save client table first
             $client->save();
             // delete all existing group of this user in groupsclients
             GroupClient::deleteAll(['clients_id' => $id]);
             // each group will be saved with a corresponding client which be saved before
             foreach ($list_groups as $key => $group) {
                 $groups_clients = new GroupClient();
                 $groups_clients->clients_id = $client->id;
                 $groups_clients->groups_id = $group;
                 $groups_clients->save();
             }
             // everything is ok, redirect to clients list page
             $errors = $groups_clients->getErrors();
             if (empty($errors)) {
                 return $this->redirect(['/clients']);
             }
         } else {
             $groups->addError('id', 'Groups can not blank');
         }
     }
     return $this->render('edit', ['client' => $client, 'groups' => $groups, 'groups_clients' => $groups_clients]);
 }
Example #3
0
 public function getGroups()
 {
     return $this->hasMany(GroupClient::className(), ['clients_id' => 'id']);
 }
Example #4
0
 public function getGroupsClients()
 {
     // Group has_many GroupClient via GroupClient.groups_id -> id
     return $this->hasMany(GroupClient::className(), ['groups_id' => 'id']);
 }