/** * @inheritdoc */ public function up() { $allPermissions = []; foreach ($this->permissions as $role => $permissions) { if (!$permissions) { continue; } $allPermissions = array_merge($allPermissions, (new Query())->from($this->autItemTable)->select('name')->where(['type' => Role::TYPE_PERMISSION, 'name' => $permissions])->column()); if ($newPermissions = array_diff($permissions, $allPermissions)) { $this->batchInsert($this->autItemTable, ['name', 'type'], MigrationHelper::toBatchData($newPermissions, [Role::TYPE_PERMISSION])); } $allPermissions = array_merge($allPermissions, $newPermissions); $this->batchInsert($this->authItemChildTable, ['child', 'parent'], MigrationHelper::toBatchData($permissions, [$role])); } }