/**
  * Loads a collection of entities in a one-to-many association.
  *
  * @param OneToManyMapping $assoc
  * @param array $criteria The criteria by which to select the entities.
  * @param PersistentCollection The collection to load/fill.
  */
 public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
 {
     $criteria = array();
     $owningAssoc = $this->_class->associationMappings[$assoc['mappedBy']];
     $sourceClass = $this->_em->getClassMetadata($assoc['sourceEntity']);
     foreach ($owningAssoc['targetToSourceKeyColumns'] as $sourceKeyColumn => $targetKeyColumn) {
         $criteria[$targetKeyColumn] = $sourceClass->reflFields[$sourceClass->fieldNames[$sourceKeyColumn]]->getValue($sourceEntity);
     }
     $sql = $this->_getSelectEntitiesSQL($criteria, $assoc);
     $params = array_values($criteria);
     $stmt = $this->_conn->executeQuery($sql, $params);
     while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $coll->hydrateAdd($this->_createEntity($result));
     }
     $stmt->closeCursor();
 }
Ejemplo n.º 2
0
    /**
     * Loads a collection of entities in a one-to-many association.
     *
     * @param array $assoc
     * @param object $sourceEntity
     * @param PersistentCollection $coll The collection to load/fill.
     * @param int|null $offset
     * @param int|null $limit
     */
    public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
    {
        $stmt = $this->getOneToManyStatement($assoc, $sourceEntity);

        while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $coll->hydrateAdd($this->_createEntity($result));
        }
        $stmt->closeCursor();
    }
 /**
  * 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)
 {
     if (isset($assoc['indexBy'])) {
         while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
             $entity = $this->_createEntity($result);
             $coll->hydrateSet($this->_class->reflFields[$assoc['indexBy']]->getValue($entity), $entity);
         }
     } else {
         while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
             $coll->hydrateAdd($this->_createEntity($result));
         }
     }
     $stmt->closeCursor();
 }
Ejemplo n.º 4
0
 /**
  * Loads a collection of entities of a many-to-many association.
  *
  * @param ManyToManyMapping $assoc
  * @param array $criteria
  * @param PersistentCollection $coll The collection to fill.
  */
 public function loadManyToManyCollection($assoc, array $criteria, PersistentCollection $coll)
 {
     $sql = $this->_getSelectManyToManyEntityCollectionSQL($assoc, $criteria);
     $params = array_values($criteria);
     $stmt = $this->_conn->executeQuery($sql, $params);
     while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $coll->hydrateAdd($this->_createEntity($result));
     }
     $stmt->closeCursor();
 }
 /**
  * Loads a collection of entities of a many-to-many association.
  *
  * @param array $criteria
  * @param PersistentCollection $coll The collection to fill.
  */
 public function loadManyToManyCollection($assoc, array $criteria, PersistentCollection $coll)
 {
     $sql = $this->_getSelectManyToManyEntityCollectionSql($assoc, $criteria);
     $params = array_values($criteria);
     if ($this->_sqlLogger !== null) {
         $this->_sqlLogger->logSql($sql, $params);
     }
     $stmt = $this->_conn->prepare($sql);
     $stmt->execute($params);
     while ($result = $stmt->fetch(Connection::FETCH_ASSOC)) {
         $coll->hydrateAdd($this->_createEntity($result));
     }
     $stmt->closeCursor();
 }