/** * {@inheritDoc} */ public function walkComparison(Comparison $comparison, AbstractNode $parentNode) { $field = $comparison->getField(); $value = $comparison->getValue()->getValue(); // shortcut for walkValue() switch ($comparison->getOperator()) { case Comparison::EQ: return $parentNode->eq()->field($this->getField($field))->literal($value)->end(); case Comparison::NEQ: return $parentNode->neq()->field($this->getField($field))->literal($value)->end(); case Comparison::LT: return $parentNode->lt()->field($this->getField($field))->literal($value)->end(); case Comparison::LTE: return $parentNode->lte()->field($this->getField($field))->literal($value)->end(); case Comparison::GT: return $parentNode->gt()->field($this->getField($field))->literal($value)->end(); case Comparison::GTE: return $parentNode->gte()->field($this->getField($field))->literal($value)->end(); case Comparison::IN: return $this->getInConstraint($parentNode, $field, $value); case Comparison::NIN: $node = $parentNode->not(); $this->getInConstraint($node, $field, $value); return $node->end(); case Comparison::CONTAINS: return $parentNode->like()->field($this->getField($field))->literal($value)->end(); case ExtraComparison::NOT_CONTAINS: return $parentNode->not()->like()->field($this->getField($field))->literal($value)->end()->end(); case ExtraComparison::IS_NULL: return $parentNode->not()->fieldIsset($this->getField($field))->end(); case ExtraComparison::IS_NOT_NULL: return $parentNode->fieldIsset($this->getField($field)); } throw new \RuntimeException('Unknown comparison operator: ' . $comparison->getOperator()); }