Since: 1.0
Author: Bernhard Schussek (bschussek@gmail.com)
Inheritance: extends Selector
コード例 #1
0
ファイル: KeyTest.php プロジェクト: webmozart/expression
 public function testToString()
 {
     $expr1 = new Key('name', new GreaterThan(10));
     $expr2 = new Key('name', new EndsWith('.css'));
     $expr3 = new Key('name', new AndX(array(new GreaterThan(10), new EndsWith('.css'))));
     $this->assertSame('name>10', $expr1->toString());
     $this->assertSame('name.endsWith(".css")', $expr2->toString());
     $this->assertSame('name{>10 && endsWith(".css")}', $expr3->toString());
 }
コード例 #2
0
ファイル: QueryBuilderVisitor.php プロジェクト: Opifer/Cms
 /**
  * Transforms the \Webmozart\Expression\Expression to a Doctrine \Doctrine\ORM\Query\Expr.
  *
  * @param Key $expr
  *
  * @return Comparison|\Doctrine\ORM\Query\Expr\Func
  */
 protected function toExpr(Key $expr)
 {
     $left = $expr->getKey();
     if (strpos($left, '.') !== false) {
         $this->shouldJoin($left);
     } else {
         $left = $this->getRootAlias() . '.' . $left;
     }
     $comparator = $expr->getExpression();
     $right = $comparator->getComparedValue();
     if ($comparator instanceof NotEquals) {
         return $this->qb->expr()->neq($left, $right);
     } elseif ($comparator instanceof In) {
         if (is_array($right)) {
             return $this->qb->expr()->in($left, $right);
         } else {
             return $this->qb->expr()->like($left, '%' . $right . '%');
         }
     }
     return $this->qb->expr()->eq($left, $right);
 }
コード例 #3
0
 private function traverseKey(Key $expr)
 {
     $innerExpr1 = $expr->getExpression();
     $innerExpr2 = $this->traverse($innerExpr1);
     if ($innerExpr1 === $innerExpr2) {
         return $expr;
     }
     return $innerExpr2 ? new Key($expr->getKey(), $innerExpr2) : null;
 }