/** * @param int $offset * @return \Porpaginas\Page */ public function take($offset, $limit) { if ($this->result !== null) { return new ArrayPage(array_slice($this->result, $offset, $limit), $offset, $limit, count($this->result)); } $query = clone $this->query; $query->setParameters($this->query->getParameters()); foreach ($this->query->getHints() as $name => $value) { $query->setHint($name, $value); } $query->setFirstResult($offset)->setMaxResults($limit); return new ORMQueryPage(new Paginator($query, $this->fetchCollection)); }
/** * Clones the given $query and copies all used * parameters and hints * * @param Query $query * @return Query */ public static function cloneQuery(Query $query) { $clonedQuery = clone $query; $clonedQuery->setParameters($query->getParameters()); // attach hints foreach ($query->getHints() as $name => $hint) { $clonedQuery->setHint($name, $hint); } return $clonedQuery; }
/** * Clones a query. * * @param Query $query The query. * * @return Query The cloned query. */ private function cloneQuery(Query $query) { /* @var $cloneQuery Query */ $cloneQuery = clone $query; $cloneQuery->setParameters(clone $query->getParameters()); foreach ($query->getHints() as $name => $value) { $cloneQuery->setHint($name, $value); } return $cloneQuery; }
/** * @param \Doctrine\ORM\Query $query The Doctrine Query * @param array $fields Fields to export * @param string $dateTimeFormat */ public function __construct(Query $query, array $fields, $dateTimeFormat = 'r') { $this->query = clone $query; $this->query->setParameters($query->getParameters()); foreach ($query->getHints() as $name => $value) { $this->query->setHint($name, $value); } $this->propertyAccessor = PropertyAccess::createPropertyAccessor(); $this->propertyPaths = array(); foreach ($fields as $name => $field) { if (is_string($name) && is_string($field)) { $this->propertyPaths[$name] = new PropertyPath($field); } else { $this->propertyPaths[$field] = new PropertyPath($field); } } $this->dateTimeFormat = $dateTimeFormat; }
/** * @param \Doctrine\ORM\Query $query The Doctrine Query * @param array $fields Fields to export * @param string $dateTimeFormat */ public function __construct(Query $query, array $fields, $dateTimeFormat = 'r') { $this->query = clone $query; $this->query->setParameters($query->getParameters()); foreach ($query->getHints() as $name => $value) { $this->query->setHint($name, $value); } // Note : will be deprecated in Symfony 3.0, conserved for 2.2 compatibility // Use createPropertyAccessor() for 3.0 // @see Symfony\Component\PropertyAccess\PropertyAccess $this->propertyAccessor = PropertyAccess::getPropertyAccessor(); $this->propertyPaths = array(); foreach ($fields as $name => $field) { if (is_string($name) && is_string($field)) { $this->propertyPaths[$name] = new PropertyPath($field); } else { $this->propertyPaths[$field] = new PropertyPath($field); } } $this->dateTimeFormat = $dateTimeFormat; }
/** * Makes full clone of the given query, including its parameters and hints * * @param Query $query * @return Query */ protected function cloneQuery(Query $query) { $result = clone $query; // clone parameters $result->setParameters(clone $query->getParameters()); // clone hints foreach ($query->getHints() as $name => $value) { $result->setHint($name, $value); } return $result; }
/** * Clones a Query object. * * @param \Doctrine\ORM\Query $query The query to clone. * * @return \Doctrine\ORM\Query The cloned query. */ private function cloneQuery(Query $query) { $queryClone = clone $query; $queryClone->setParameters($query->getParameters()); foreach ($query->getHints() as $key => $value) { $queryClone->setHint($key, $value); } return $queryClone; }
/** * @param Query $query * * @return string */ public function getQueryCacheKey(Query $query) { $hints = $query->getHints(); ksort($hints); return md5($query->getDql() . var_export($query->getParameters(), true) . var_export($hints, true) . '&firstResult=' . $query->getFirstResult() . '&maxResult=' . $query->getMaxResults() . '&hydrationMode=' . $query->getHydrationMode()); }
/** * Add to query share condition * * @param Query $query * @param Node|null $shareCondition */ protected function addShareConditionToQuery(Query $query, $shareCondition) { if ($shareCondition) { $hints = $query->getHints(); if (!empty($hints[Query::HINT_CUSTOM_TREE_WALKERS])) { $customHints = !in_array(self::ORO_ACL_WALKER, $hints[Query::HINT_CUSTOM_TREE_WALKERS]) ? array_merge($hints[Query::HINT_CUSTOM_TREE_WALKERS], [self::ORO_ACL_WALKER]) : $hints[Query::HINT_CUSTOM_TREE_WALKERS]; } else { $customHints = [self::ORO_ACL_WALKER]; } $query->setHint(Query::HINT_CUSTOM_TREE_WALKERS, $customHints); $query->setHint(AclWalker::ORO_ACL_SHARE_CONDITION, $shareCondition); } }