コード例 #1
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);
 }
コード例 #2
0
ファイル: CompleteCriteria.php プロジェクト: Maksold/platform
 /**
  * @param Criteria $criteria
  *
  * @return string[]
  */
 protected function getFields(Criteria $criteria)
 {
     $fields = [];
     $whereExpr = $criteria->getWhereExpression();
     if ($whereExpr) {
         $visitor = new FieldVisitor();
         $visitor->dispatch($whereExpr);
         $fields = $visitor->getFields();
     }
     $orderBy = $criteria->getOrderings();
     if (!empty($orderBy)) {
         foreach ($orderBy as $field => $direction) {
             if (!in_array($field, $fields, true)) {
                 $fields[] = $field;
             }
         }
     }
     return $fields;
 }