public function getQueryResult(SelectQuery $query, $expires = Cache::DO_NOT_CACHE) { if ($expires !== Cache::DO_NOT_CACHE && ($list = $this->getCachedByQuery($query))) { return $list; } else { $list = $this->fetchList($query); $count = clone $query; $count = DBPool::getByDao($this->dao)->queryRow($count->dropFields()->dropOrder()->limit(null, null)->get(SQLFunction::create('COUNT', '*')->setAlias('count'))); return $this->cacheByQuery($query, $list ? QueryResult::create()->setList($list)->setCount($count['count'])->setQuery($query) : QueryResult::create(), $expires); } }