newHydrator() public method

Create a new instance for the given hydration mode.
public newHydrator ( integer $hydrationMode ) : Doctrine\ORM\Internal\Hydration\AbstractHydrator
$hydrationMode integer
return Doctrine\ORM\Internal\Hydration\AbstractHydrator
Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * {@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);
 }
Ejemplo n.º 3
0
 /**
  * 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);
 }
Ejemplo n.º 4
0
 /**
  * {@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);
     }
 }
Ejemplo n.º 6
0
 /**
  * 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);
 }
Ejemplo n.º 7
0
    /**
     * 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);
    }
Ejemplo n.º 8
0
 /**
  * @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);
     }
 }
Ejemplo n.º 9
0
 /**
  * @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);
     }
 }
Ejemplo n.º 10
0
 /**
  * {@inheritDoc}
  *
  * @static 
  */
 public static function newHydrator($hydrationMode)
 {
     return \Doctrine\ORM\EntityManager::newHydrator($hydrationMode);
 }
 /**
  * {@inheritdoc}
  */
 public function newHydrator($hydrationMode)
 {
     return $this->wrapped->newHydrator($hydrationMode);
 }