Ejemplo n.º 1
0
 /**
  * @param array $associationMapping
  * @param array $entityIds
  * @param array $config
  *
  * @return Query
  */
 protected function getRelatedItemsIdsQuery($associationMapping, $entityIds, $config)
 {
     $qb = $this->getToManyAssociationQueryBuilder($associationMapping, $entityIds)->addSelect(sprintf('r.%s as relatedEntityId', $this->doctrineHelper->getEntityIdFieldName($associationMapping['targetEntity'])));
     return $this->getQuery($qb, $config);
 }
Ejemplo n.º 2
0
 /**
  * @param array  $result
  * @param string $entityClass
  * @param array  $relatedData [field => [entityId => [field => value, ...], ...], ...]
  *
  * @throws \RuntimeException
  */
 protected function applyRelatedData(array &$result, $entityClass, $relatedData)
 {
     $entityIdFieldName = $this->doctrineHelper->getEntityIdFieldName($entityClass);
     foreach ($result as &$resultItem) {
         if (!array_key_exists($entityIdFieldName, $resultItem)) {
             throw new \RuntimeException(sprintf('The result item does not contain the entity identifier. Entity: %s.', $entityClass));
         }
         $entityId = $resultItem[$entityIdFieldName];
         foreach ($relatedData as $field => $relatedItems) {
             $resultItem[$field] = [];
             if (!empty($relatedItems[$entityId])) {
                 foreach ($relatedItems[$entityId] as $relatedItem) {
                     $resultItem[$field][] = $relatedItem;
                 }
             }
         }
     }
 }