Author: Vojtěch Kohout
Example #1
0
 /**
  * @param Property $property
  * * @param Relationship\HasMany $relationship micro-optimalization
  * @param Filtering|null $targetTableFiltering
  * @param Filtering|null $relTableFiltering
  * @return Entity[]
  * @throws InvalidValueException
  */
 private function getHasManyValue(Property $property, Relationship\HasMany $relationship, Filtering $targetTableFiltering = null, Filtering $relTableFiltering = null)
 {
     $targetTable = $relationship->getTargetTable();
     $columnReferencingTargetTable = $relationship->getColumnReferencingTargetTable();
     $rows = $this->row->referencing($relationship->getRelationshipTable(), $relationship->getColumnReferencingSourceTable(), $relTableFiltering, $relationship->getStrategy());
     $value = [];
     foreach ($rows as $row) {
         $valueRow = $row->referenced($targetTable, $columnReferencingTargetTable, $targetTableFiltering);
         if ($valueRow !== null) {
             $entityClass = $this->mapper->getEntityClass($targetTable, $valueRow);
             $entity = $this->entityFactory->createEntity($entityClass, $valueRow);
             $this->checkConsistency($property, $entityClass, $entity);
             $entity->makeAlive($this->entityFactory);
             $value[] = $entity;
         }
     }
     return $this->entityFactory->createCollection($value);
 }