public function testNestingGroupsBuildsCorrectCompositeStructure() { $builder = new PredicateBuilder(); $builder->startOrGroup(); $builder->startAndGroup(); $builder->andWhere('bacon'); $builder->andWhere('eggs'); $builder->endGroup(); $builder->startAndGroup(); $builder->andWhere('steak'); $builder->andWhere('fries'); $builder->endGroup(); $builder->endGroup(); $this->assertQuery('((bacon AND eggs) OR (steak AND fries))', $builder); }
private function buildQueryTerm() { if (!$this->conditionBuilder) { return $this->query; } $compiler = new QueryPredicateVisitor(); $this->conditionBuilder->endAllGroups(); $this->conditionBuilder->andWhere($this->query); return $compiler->compile($this->conditionBuilder->getPredicate()); }