/** * @param QueryBuilder $qb * @param array $config */ public function prepareQuery(QueryBuilder $qb, $config) { $rootAlias = $this->doctrineHelper->getRootAlias($qb); $entityClass = $this->doctrineHelper->getRootEntityClass($qb); $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass); $qb->resetDQLPart('select'); $this->updateSelectQueryPart($qb, $rootAlias, $entityClass, $config); $aliasCounter = 0; $fields = $this->getFields($entityClass, $config); foreach ($fields as $field) { if (!$entityMetadata->isAssociation($field) || $entityMetadata->isCollectionValuedAssociation($field)) { continue; } $alias = 'a' . ++$aliasCounter; $qb->leftJoin(sprintf('%s.%s', $rootAlias, $field), $alias); $this->updateSelectQueryPart($qb, $alias, $entityMetadata->getAssociationTargetClass($field), $this->getFieldConfig($config, $field), true); } }