Example #1
0
 /**
  * Gets the root entity alias of the query.
  * This method rethrows QueryException as InvalidEntityException to avoid BC break
  *
  * @param QueryBuilder $qb             The query builder
  * @param bool         $throwException Whether to throw exception in case the query does not have a root alias
  *
  * @return string|null
  *
  * @throws Exception\InvalidEntityException
  */
 public static function getSingleRootAlias(QueryBuilder $qb, $throwException = true)
 {
     try {
         return BaseQueryUtils::getSingleRootAlias($qb, $throwException);
     } catch (QueryException $e) {
         throw new Exception\InvalidEntityException($e->getMessage());
     }
 }
Example #2
0
 /**
  * Adds criteria to the query.
  *
  * @param QueryBuilder $qb
  * @param Criteria     $criteria
  */
 public function applyCriteria(QueryBuilder $qb, Criteria $criteria)
 {
     $joins = $criteria->getJoins();
     if (!empty($joins)) {
         $rootAlias = QueryUtils::getSingleRootAlias($qb);
         foreach ($joins as $join) {
             $alias = $join->getAlias();
             $joinExpr = str_replace(Criteria::ROOT_ALIAS_PLACEHOLDER, $rootAlias, $join->getJoin());
             $condition = $join->getCondition();
             if ($condition) {
                 $condition = strtr($condition, [Criteria::ROOT_ALIAS_PLACEHOLDER => $rootAlias, Criteria::ENTITY_ALIAS_PLACEHOLDER => $alias]);
             }
             $method = strtolower($join->getJoinType()) . 'Join';
             $qb->{$method}($joinExpr, $alias, $join->getConditionType(), $condition, $join->getIndexBy());
         }
     }
     $qb->addCriteria($criteria);
 }
Example #3
0
 public function testGetSingleRootAliasWhenQueryHasNoRootAliasAndNoExceptionRequested()
 {
     $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock();
     $qb->expects($this->once())->method('getRootAliases')->willReturn([]);
     $this->assertNull(QueryUtils::getSingleRootAlias($qb, false));
 }