/** * @param Expression[] $expressions * @param string $class * * @return \Doctrine\ORM\QueryBuilder * * @throws \Exception */ public function toQueryBuilder(array $expressions, $class) { $expr = $this->buildExpression($expressions); $qb = $this->em->getRepository($class)->createQueryBuilder('a'); $traverser = new ExpressionTraverser(); $traverser->addVisitor(new QueryBuilderVisitor($qb)); $traverser->traverse($expr); return $qb; }
/** * Builds a {@link BindingDescriptor} expression for a given * {@link AssetMapping} expression. * * @param Expression|null $expr The {@link AssetMapping} expression. * * @return Expression The built expression. */ public function buildExpression(Expression $expr = null) { if (!$this->defaultExpression) { $this->defaultExpression = Expr::method('isEnabled', Expr::same(true))->andMethod('getTypeName', Expr::same(DiscoveryUrlGenerator::BINDING_TYPE))->andMethod('getBinding', Expr::method('getQuery', Expr::endsWith('{,/**/*}'))); } if (!$expr) { return $this->defaultExpression; } $traverser = new ExpressionTraverser(); $traverser->addVisitor($this); return $this->defaultExpression->andX($traverser->traverse($expr)); }
/** * Builds a {@link BindingDescriptor} expression for a given * {@link AssetMapping} expression. * * @param Expression $expr The {@link AssetMapping} expression. * * @return Expression The built expression. */ public function buildExpression(Expression $expr = null) { if (!$this->defaultExpression) { $this->defaultExpression = Expr::same(BindingState::ENABLED, BindingDescriptor::STATE)->andSame(DiscoveryUrlGenerator::BINDING_TYPE, BindingDescriptor::TYPE_NAME)->andEndsWith('{,/**/*}', BindingDescriptor::QUERY); } if (!$expr) { return $this->defaultExpression; } $traverser = new ExpressionTraverser(); $traverser->addVisitor($this); return $this->defaultExpression->andX($traverser->traverse($expr)); }
public function testRemoveAllDisjuncts() { $expr1 = new OrX(array($gt1 = new GreaterThan(10), $same = new Same('5'))); $visitor = $this->getMock('Webmozart\\Expression\\Traversal\\ExpressionVisitor'); $visitor->expects($this->at(0))->method('enterExpression')->with($this->identicalTo($expr1))->willReturn($expr1); $visitor->expects($this->at(1))->method('enterExpression')->with($this->identicalTo($gt1))->willReturn($gt1); $visitor->expects($this->at(2))->method('leaveExpression')->with($this->identicalTo($gt1))->willReturn(null); $visitor->expects($this->at(3))->method('enterExpression')->with($this->identicalTo($same))->willReturn($same); $visitor->expects($this->at(4))->method('leaveExpression')->with($this->identicalTo($same))->willReturn(null); $this->traverser->addVisitor($visitor); $this->assertNull($this->traverser->traverse($expr1)); }