/** * @param Query|QueryBuilder $criteria * * @return string (sql) */ protected function getSqlCriteria($criteria) { if ($criteria instanceof QueryBuilder) { return $criteria->getQuery()->getSQL(); } elseif ($criteria instanceof Query) { return $criteria->getSQL(); } else { throw new \Exception(sprintf('Criteria must be instance of Query or QueryBuilder, instance of %s given', get_class($criteria))); } }
/** * Constructor. * * @param Query|QueryBuilder $query * A Doctrine ORM query or query builder. * @param boolean $fetchJoinCollection * Whether the query joins a collection (true by default). * @param boolean $cache * Use result cache (true by default). * @param boolean $count * Execute count query (true by default). */ public function __construct($query, $fetchJoinCollection = true, $cached = true, $count = true) { if ($count) { $countQuery = clone $query; $countQuery = $countQuery->select('count(e) as c')->setFirstResult(0)->setMaxResults(1)->getQuery(); $this->countQuery = $countQuery; } $q = $query; if ($cached) { $this->cache_prefix = ''; if ($query instanceof QueryBuilder) { $q = $query->getQuery(); $entities = $query->getRootEntities(); if ($entities) { $entity = $entities[0]; $this->cache_prefix = strtolower(substr(strrchr($entity, '\\'), 1) ?: $entity) . '-'; } } $q->useQueryCache(true)->useResultCache(true, 3600, $this->cache_prefix . md5($q->getDQL())); } parent::__construct($q, $fetchJoinCollection); }
/** * Return the result of a query. * * @param \Doctrine\ORM\Query $query * * @return array */ protected function getQueryResults($query) { return $query->getQuery()->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true)->getResult(); }