コード例 #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);
     }
 }