コード例 #1
0
ファイル: CompleteCriteria.php プロジェクト: Maksold/platform
 /**
  * Sets missing join aliases
  *
  * @param Criteria $criteria
  */
 protected function setJoinAliases(Criteria $criteria)
 {
     $counter = 0;
     $joins = $criteria->getJoins();
     foreach ($joins as $join) {
         $counter++;
         if (!$join->getAlias()) {
             $join->setAlias(sprintf(self::JOIN_ALIAS_TEMPLATE, $counter));
         }
     }
 }
コード例 #2
0
ファイル: DoctrineHelper.php プロジェクト: Maksold/platform
 /**
  * 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);
 }