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())); } }
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())); } }