protected function _run() { $key = $this->getCacheKey() . 'run'; $dependency = new TagDependency(['tags' => [$this->className() . (string) $this->namespace, (new Tree())->getTableCacheTag()]]); $result = \Yii::$app->cache->get($key); if ($result === false || $this->enabledRunCache == Cms::BOOL_N) { $this->activeQuery = Tree::find(); if ($this->treePid) { $this->activeQuery->andWhere(['pid' => $this->treePid]); } if ($this->level) { $this->activeQuery->andWhere(['level' => $this->level]); } if ($this->active) { $this->activeQuery->andWhere(['active' => $this->active]); } if ($this->site_codes) { $this->activeQuery->andWhere(['site_code' => $this->site_codes]); } if ($this->enabledCurrentSite == Cms::BOOL_Y && ($currentSite = \Yii::$app->cms->site)) { $this->activeQuery->andWhere(['site_code' => $currentSite->code]); } if ($this->orderBy) { $this->activeQuery->orderBy([$this->orderBy => (int) $this->order]); } if ($this->tree_type_ids) { $this->activeQuery->andWhere(['tree_type_id' => $this->tree_type_ids]); } /** * */ if ($this->with) { $this->activeQuery->with($this->with); } if ($this->activeQueryCallback && is_callable($this->activeQueryCallback)) { $callback = $this->activeQueryCallback; $callback($this->activeQuery); } $result = parent::_run(); \Yii::$app->cache->set($key, $result, (int) $this->runCacheDuration, $dependency); } return $result; }