Example #1
0
 /**
  * Builds a filter group and, recursively, constructs a tree of conditions for the filters
  *
  * @param QueryBuilder $queryBuilder
  * @param Filter       $filterDefinition
  *
  * @throws \Exception
  * @return Andx|Orx
  */
 protected function buildFilterGroup(QueryBuilder $queryBuilder, Filter $filterDefinition)
 {
     // Container for the expressions to add to the $queryBuilder
     $filterConditionType = $filterDefinition->getConditionType();
     if ($filterConditionType == Filter::CONDITION_TYPE_AND) {
         $expressions = $queryBuilder->expr()->andX();
     } elseif ($filterConditionType == Filter::CONDITION_TYPE_OR) {
         $expressions = $queryBuilder->expr()->orX();
     } else {
         throw new \Exception("Unknown condition type {$filterConditionType} on the filter.");
     }
     // Loop through all the filters in the collection
     $this->addExpressionsForFilter($expressions, $filterDefinition, $queryBuilder);
     return $expressions;
 }