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]); }
public function getGroups() { return $this->hasMany(GroupClient::className(), ['clients_id' => 'id']); }
public function getGroupsClients() { // Group has_many GroupClient via GroupClient.groups_id -> id return $this->hasMany(GroupClient::className(), ['groups_id' => 'id']); }