public traverse ( Webmozart\Expression\Expression $expr ) : Webmozart\Expression\Expression | ||
$expr | Webmozart\Expression\Expression | The expression to traverse. |
리턴 | Webmozart\Expression\Expression | The modified expression. May be `null` if the expression was removed entirely. |
public function traverse(Expression $expr)
{
// Do one full traversal per visitor. If any of the visitors removes
// the expression entirely, subsequent visitors are not invoked.
foreach ($this->visitors as $visitor) {
$expr = $this->traverseForVisitor($expr, $visitor);
if (!$expr) {
return null;
}
}
return $expr;
}
/** * @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; }