/** * 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(); }
/** * 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(); }
/** * 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(); }