Exemplo n.º 1
0
 public function visitTextComparisonExpression(Expr\TextComparisonExpression $textComparison)
 {
     // fixme
     $rawValue = $this->visitValueIdentifier($textComparison->getValue());
     $parameterName = str_replace('.', '_', $textComparison->getField()) . '_' . substr(md5($rawValue), 0, 5);
     $placeHolder = ':' . $parameterName;
     $qb = $this->getQueryBuilder();
     switch ($textComparison->getOperator()) {
         case Expr\TextComparisonExpression::MATCH:
             $parameter = new Parameter($parameterName, $this->convertWildcardValue($rawValue));
             $qb->getParameters()->add($parameter);
             return $qb->expr()->like($this->visitField($textComparison->getField()), $placeHolder);
         case Expr\TextComparisonExpression::NOT_MATCH:
             $parameter = new Parameter($parameterName, $this->convertWildcardValue($rawValue));
             $qb->getParameters()->add($parameter);
             return $qb->expr()->notLike($this->visitField($textComparison->getField()), $placeHolder);
         case Expr\TextComparisonExpression::CONTAIN:
             $parameter = new Parameter($parameterName, '%' . $rawValue . '%');
             $qb->getParameters()->add($parameter);
             return $qb->expr()->like($this->visitField($textComparison->getField()), $placeHolder);
         case Expr\TextComparisonExpression::NOT_CONTAIN:
             $parameter = new Parameter($parameterName, '%' . $rawValue . '%');
             $qb->getParameters()->add($parameter);
             return $qb->expr()->notLike($this->visitField($textComparison->getField()), $placeHolder);
         default:
             throw new \RuntimeException(sprintf('Unknown Operator[%s] for TextComparisonExpression.', (string) $textComparison->getOperator()));
     }
 }