Beispiel #1
0
 public function visitTextComparisonExpression(Expr\TextComparisonExpression $textComparison)
 {
     $field = $expr->getField();
     $value = $this->visitValueIdentifier($textComparison->getValue());
     switch ($textComparison->getOperator()) {
         case Expr\TextComparisonExpression::MATCH:
         case Expr\TextComparisonExpression::CONTAIN:
             return $field . Literals::L_COLON . Literals::L_MATCH . Literals::L_COLON . $value;
         case Expr\TextComparisonExpression::NOT_MATCH:
         case Expr\TextComparisonExpression::NOT_CONTAIN:
             return $field . Literals::L_COLON . Literals::L_NOT_MATCH . Literals::L_COLON . $value;
         default:
             throw new \RuntimeException(sprintf('Unknown Operator[%s] for TextComparisonExpression.', (string) $textComparison->getOperator()));
     }
 }
Beispiel #2
0
 /**
  * postfix 
  *   Match postfix 
  * @param mixed $field 
  * @param mixed $value 
  * @access public
  * @return void
  */
 public function postfix($field, $value)
 {
     if (!$value instanceof Expr\ConditionalExpression) {
         $value = $this->buildPart(Expr\TextComparisonExpression::WILDCARD_STRING . Expr\TextComparisonExpression::escapeString((string) $value));
     }
     return new Expr\TextComparisonExpression($field, $value, Expr\TextComparisonExpression::MATCH);
 }
 public function testBasic()
 {
     $escaped = Expr\TextComparisonExpression::escapeString('.abc*123_abc');
     $this->assertEquals('\\.abc\\*123_abc', $escaped);
 }
Beispiel #4
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()));
     }
 }