hasMany(UserAdminCmsR::class, ['user_id' => 'id']); } public function getCmsRole() { return $this->hasOne(CmsRoles::class, ['id' => 'role_id']); } public function getRightsIds() { $rightsIds = []; foreach ($this->userRights as $userRight) { $rightsIds[] = $userRight->right_id; } return $rightsIds; } /** * @param UserAdminCms $model * @return string */ public static function getRightList(UserAdminCms $model) { list($checkedList, $checkList) = ["", ""]; foreach (CmsRights::find()->all() as $item) { if (in_array($item->id, $model->getRightsIds())) $checkedList .= ''; } foreach (CmsRights::find()->all() as $item) { if (!in_array($item->id, $model->getRightsIds())) $checkList .= ''; } return '
' . $checkedList . '
' . $checkList; } public function updateRights($rightsIds) { list($create_list, $delete_list) = [[], []]; //Delete OLD foreach ($this->getRightsIds() as $rightId) { if (!in_array($rightId, $rightsIds)) $delete_list[] = $rightId; } $deleteUserCmsR = UserAdminCmsR::find()->where(['user_id' => $this->id])->andWhere(['IN', 'right_id', $delete_list])->all(); foreach ($deleteUserCmsR as $cmsUserRModel) $cmsUserRModel->delete(); //Create new foreach ($rightsIds as $currentId) { if (!in_array($currentId, $this->getRightsIds())) $create_list[] = $currentId; } foreach ($create_list as $rightId){ $cmsUserRModel = new UserAdminCmsR(); $cmsUserRModel->user_id = $this->id; $cmsUserRModel->right_id = $rightId; $cmsUserRModel->save(); } } }