Create a new instance for the given hydration mode.
public newHydrator ( integer $hydrationMode ) : Doctrine\ORM\Internal\Hydration\AbstractHydrator | ||
$hydrationMode | integer | |
Résultat | Doctrine\ORM\Internal\Hydration\AbstractHydrator |
/** * Executes the query. * * @param ArrayCollection|array|null $parameters Query parameters. * @param integer|null $hydrationMode Processing mode to be used during the hydration process. * * @return mixed */ public function execute($parameters = null, $hydrationMode = null) { if ($hydrationMode !== null) { $this->setHydrationMode($hydrationMode); } if (!empty($parameters)) { $this->setParameters($parameters); } $setCacheEntry = function () { }; if ($this->_hydrationCacheProfile !== null) { list($cacheKey, $realCacheKey) = $this->getHydrationCacheId(); $queryCacheProfile = $this->getHydrationCacheProfile(); $cache = $queryCacheProfile->getResultCacheDriver(); $result = $cache->fetch($cacheKey); if (isset($result[$realCacheKey])) { return $result[$realCacheKey]; } if (!$result) { $result = array(); } $setCacheEntry = function ($data) use($cache, $result, $cacheKey, $realCacheKey, $queryCacheProfile) { $result[$realCacheKey] = $data; $cache->save($cacheKey, $result, $queryCacheProfile->getLifetime()); }; } $stmt = $this->_doExecute(); if (is_numeric($stmt)) { $setCacheEntry($stmt); return $stmt; } $data = $this->_em->newHydrator($this->_hydrationMode)->hydrateAll($stmt, $this->_resultSetMapping, $this->_hints); $setCacheEntry($data); return $data; }
/** * {@inheritDoc} */ public function newHydrator($hydrationMode) { switch ($hydrationMode) { case Query::HYDRATE_OBJECT: return new ObjectsToCollectionHydrator($this); case Query::HYDRATE_SIMPLEOBJECT: return new SimpleObjectsToCollectionHydrator($this); } return parent::newHydrator($hydrationMode); }
/** * Executes the query and returns an IterableResult that can be used to incrementally * iterate over the result. * * @param ArrayCollection|array|null $parameters The query parameters. * @param integer|null $hydrationMode The hydration mode to use. * * @return \Doctrine\ORM\Internal\Hydration\IterableResult */ public function iterate($parameters = null, $hydrationMode = null) { if ($hydrationMode !== null) { $this->setHydrationMode($hydrationMode); } if (!empty($parameters)) { $this->setParameters($parameters); } $stmt = $this->_doExecute(); return $this->_em->newHydrator($this->_hydrationMode)->iterate($stmt, $this->_resultSetMapping, $this->_hints); }
/** * {@inheritdoc} */ public function newHydrator($hydrationMode) { $hydrators = $this->getLoggingHydrators(); if (isset($hydrators[$hydrationMode])) { $className = $hydrators[$hydrationMode]['loggingClass']; if (class_exists($className)) { return new $className($this); } } return parent::newHydrator($hydrationMode); }
/** * {@inheritDoc} */ public function newHydrator($hydrationMode) { switch ($hydrationMode) { case Query::HYDRATE_OBJECT: return new LoggingObjectHydrator($this); case Query::HYDRATE_ARRAY: return new LoggingArrayHydrator($this); case Query::HYDRATE_SCALAR: return new LoggingScalarHydrator($this); case Query::HYDRATE_SINGLE_SCALAR: return new LoggingSingleScalarHydrator($this); case Query::HYDRATE_SIMPLEOBJECT: return new LoggingSimpleObjectHydrator($this); default: return parent::newHydrator($hydrationMode); } }
/** * Hydrate a collection from a given dbal statement. * * @param array $assoc * @param Doctrine\DBAL\Statement $stmt * @param PersistentCollection $coll */ private function loadCollectionFromStatement($assoc, $stmt, $coll) { $hints = array('deferEagerLoads' => true, 'collection' => $coll); if (isset($assoc['indexBy'])) { $rsm = clone $this->_rsm; // this is necessary because the "default rsm" should be changed. $rsm->addIndexBy('r', $assoc['indexBy']); } else { $rsm = $this->_rsm; } $hydrator = $this->_em->newHydrator(Query::HYDRATE_OBJECT); $hydrator->hydrateAll($stmt, $rsm, $hints); }
/** * Hydrates a collection from a given DBAL statement. * * @param array $assoc * @param \Doctrine\DBAL\Statement $stmt * @param PersistentCollection $coll * * @return array */ private function loadCollectionFromStatement($assoc, $stmt, $coll) { $rsm = $this->rsm; $hints = array( UnitOfWork::HINT_DEFEREAGERLOAD => true, 'collection' => $coll ); if (isset($assoc['indexBy'])) { $rsm = clone ($this->rsm); // this is necessary because the "default rsm" should be changed. $rsm->addIndexBy('r', $assoc['indexBy']); } return $this->em->newHydrator(Query::HYDRATE_OBJECT)->hydrateAll($stmt, $rsm, $hints); }
/** * @param int $hydrationMode * @return Doctrine\ORM\Internal\Hydration\AbstractHydrator|Hydration\ObjectHydrator|Hydration\SimpleObjectHydrator * @throws \Doctrine\ORM\ORMException */ public function newHydrator($hydrationMode) { switch ($hydrationMode) { case Query::HYDRATE_OBJECT: return new Hydration\ObjectHydrator($this); case Query::HYDRATE_SIMPLEOBJECT: return new Hydration\SimpleObjectHydrator($this); case Hydration\HashHydrator::NAME: return new Hydration\HashHydrator($this); default: return parent::newHydrator($hydrationMode); } }
/** * @param int $hydrationMode * @return Doctrine\ORM\Internal\Hydration\AbstractHydrator * @throws \Doctrine\ORM\ORMException */ public function newHydrator($hydrationMode) { switch ($hydrationMode) { case Hydration\HashHydrator::NAME: return new Hydration\HashHydrator($this); default: return parent::newHydrator($hydrationMode); } }
/** * {@inheritDoc} * * @static */ public static function newHydrator($hydrationMode) { return \Doctrine\ORM\EntityManager::newHydrator($hydrationMode); }
/** * {@inheritdoc} */ public function newHydrator($hydrationMode) { return $this->wrapped->newHydrator($hydrationMode); }