Пример #1
0
 /**
  * @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);
     }
 }
Пример #2
0
 /**
  * @param QueryBuilder $qb
  * @param array        $config
  */
 protected function updateQuery(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->fieldAccessor->getFields($entityClass, $config);
     foreach ($fields as $field) {
         if (!$entityMetadata->isAssociation($field) || $entityMetadata->isCollectionValuedAssociation($field)) {
             continue;
         }
         $join = sprintf('%s.%s', $rootAlias, $field);
         $alias = $this->getExistingJoinAlias($qb, $rootAlias, $join);
         if (!$alias) {
             $alias = 'a' . ++$aliasCounter;
             $qb->leftJoin($join, $alias);
         }
         $this->updateSelectQueryPart($qb, $alias, $entityMetadata->getAssociationTargetClass($field), ConfigUtil::getFieldConfig($config, $field), true);
     }
 }