/** * Записываем роли, допуски и их связи в * соотествующие таблицы после сохранения * * @param bool $insert * @param array $changedAttributes * @return bool */ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // Удаляем сначала прошлые связи с другими ролями и допусками AuthItemChild::deleteAll(['parent' => $this->name]); // Сохраняем новые связи if ($this->children_array) { foreach ($this->children_array as $child) { $authItemChild = new AuthItemChild(); $authItemChild->parent = $this->name; $authItemChild->child = $child; $authItemChild->save(); } } // Удаляем сначала прошлые связи с пользователями AuthAssignment::deleteAll(['item_name' => $this->name]); // Сохраняем новые связи if ($this->user_array) { foreach ($this->user_array as $user) { $authAssignment = new AuthAssignment(); $authAssignment->item_name = $this->name; $authAssignment->user_id = $user; $authAssignment->save(); } } }
/** * Сязи пользователь => роль * @return \yii\db\ActiveQuery */ public function getAuthAssignments() { return $this->hasMany(AuthAssignment::className(), ['user_id' => 'id']); }