getValue() public method

public getValue ( ) : Doctrine\Common\Collections\Expr\Value
return Doctrine\Common\Collections\Expr\Value
 /**
  * {@inheritDoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $parameterName = str_replace('.', '_', $comparison->getField());
     $value = $this->walkValue($comparison->getValue());
     if ($comparison->getOperator() === Comparison::CONTAINS) {
         $value = "%{$value}%";
     }
     $placeholder = null;
     if ($this->walkValue($comparison->getValue()) !== null) {
         $this->parameters[$parameterName] = $value;
         $placeholder = ':' . $parameterName;
     }
     return $this->doWalkComparison($this->getFieldName($comparison->getField()), $comparison->getOperator(), $placeholder);
 }
 /**
  * Convert a comparison expression into the target query language output
  *
  * @param \Doctrine\Common\Collections\Expr\Comparison $comparison
  *
  * @return mixed
  */
 public function walkComparison(Comparison $comparison)
 {
     $field = $comparison->getField();
     $value = $comparison->getValue()->getValue();
     // shortcut for walkValue()
     return $this->persister->getSelectConditionStatementSQL($field, $value, null, $comparison->getOperator());
 }
Beispiel #3
0
 /**
  * {@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());
 }
Beispiel #4
0
 /**
  * Convert a comparison expression into the target query language output
  *
  * @param \Doctrine\Common\Collections\Expr\Comparison $comparison
  *
  * @return mixed
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     $field = $comparison->getField();
     $this->values[] = $value;
     $this->types[] = array($field, $value);
 }
 /**
  * Converts a comparison expression into the target query language output.
  *
  * @param \Doctrine\Common\Collections\Expr\Comparison $comparison
  *
  * @return mixed
  */
 public function walkComparison(Comparison $comparison)
 {
     $field = $comparison->getField();
     $value = $comparison->getValue()->getValue();
     // shortcut for walkValue()
     if (isset($this->classMetadata->associationMappings[$field]) && $value !== null && !is_object($value) && !in_array($comparison->getOperator(), array(Comparison::IN, Comparison::NIN))) {
         throw PersisterException::matchingAssocationFieldRequiresObject($this->classMetadata->name, $field);
     }
     return $this->persister->getSelectConditionStatementSQL($field, $value, null, $comparison->getOperator());
 }
 /**
  * Converts a comparison expression into the target query language output.
  *
  * @see ExpressionVisitor::walkComparison()
  * @param Comparison $comparison
  * @return \Doctrine\ODM\MongoDB\Query\Expr
  */
 public function walkComparison(Comparison $comparison)
 {
     switch ($comparison->getOperator()) {
         case Comparison::EQ:
         case Comparison::GT:
         case Comparison::GTE:
         case Comparison::IN:
         case Comparison::IS:
         case Comparison::LT:
         case Comparison::LTE:
         case Comparison::NEQ:
         case Comparison::NIN:
             $method = self::$operatorMethods[$comparison->getOperator()];
             return $this->builder->expr()->field($comparison->getField())->{$method}($this->walkValue($comparison->getValue()));
         case Comparison::CONTAINS:
             $value = $this->walkValue($comparison->getValue());
             return $this->builder->expr()->field($comparison->getField())->equals(new \MongoRegex('/' . preg_quote($value, '/') . '/'));
         default:
             throw new \RuntimeException('Unknown comparison operator: ' . $comparison->getOperator());
     }
 }
 /**
  * {@inheritdoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     list($type, $field) = Criteria::explodeFieldTypeName($comparison->getField());
     $value = $comparison->getValue()->getValue();
     if (is_array($value)) {
         $value = sprintf('(%s)', implode(', ', $value));
     }
     if ($type === Query::TYPE_TEXT) {
         $value = sprintf('"%s"', $value);
     }
     return sprintf('%s %s %s %s', $type, $field, Criteria::getSearchOperatorByComparisonOperator($comparison->getOperator()), $value);
 }
Beispiel #8
0
 function it_should_restrict_with_or_condition(Comparison $comparison, Value $value, QueryBuilder $queryBuilder, ConstraintOrx $constraint, ConstraintComparison $comparisonConstraint)
 {
     $queryBuilder->orWhere()->willReturn($constraint);
     $value->getValue()->willReturn('value');
     $comparison->getValue()->willReturn($value);
     $comparison->getField()->willReturn('foo');
     $comparison->getOperator()->willReturn('=');
     $constraint->eq()->willReturn($comparisonConstraint);
     $comparisonConstraint->field('o.foo')->willReturn($comparisonConstraint);
     $comparisonConstraint->literal('value')->shouldBeCalled()->willReturn($comparisonConstraint);
     $comparisonConstraint->end()->shouldBeCalled();
     $this->restrict($comparison, DataSourceInterface::CONDITION_OR);
 }
 /**
  * Convert a comparison expression into the target query language output
  *
  * @param \Doctrine\Common\Collections\Expr\Comparison $comparison
  *
  * @return mixed
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     $field = $comparison->getField();
     $operator = $comparison->getOperator();
     if (($operator === Comparison::EQ || $operator === Comparison::IS) && $value === null) {
         return;
     } else {
         if ($operator === Comparison::NEQ && $value === null) {
             return;
         }
     }
     $this->values[] = $value;
     $this->types[] = array($field, $value);
 }
 /**
  * {@inheritdoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $field = $comparison->getField();
     $value = $this->walkValue($comparison->getValue());
     switch ($comparison->getOperator()) {
         case Comparison::EQ:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) === $value;
             };
         case Comparison::NEQ:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) !== $value;
             };
         case Comparison::LT:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) < $value;
             };
         case Comparison::LTE:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) <= $value;
             };
         case Comparison::GT:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) > $value;
             };
         case Comparison::GTE:
             return function ($object) use($field, $value) {
                 return static::getObjectFieldValue($object, $field) >= $value;
             };
         case Comparison::IN:
             return function ($object) use($field, $value) {
                 return in_array(static::getObjectFieldValue($object, $field), $value);
             };
         case Comparison::NIN:
             return function ($object) use($field, $value) {
                 return !in_array(static::getObjectFieldValue($object, $field), $value);
             };
         case Comparison::CONTAINS:
             return function ($object) use($field, $value) {
                 return false !== strpos(static::getObjectFieldValue($object, $field), $value);
             };
         default:
             throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
     }
 }
 /**
  * Converts a comparison expression into the target query language output.
  *
  * @see ExpressionVisitor::walkComparison()
  * @param Comparison $comparison
  * @return array
  *
  * @throws \RuntimeException
  */
 public function walkComparison(Comparison $comparison)
 {
     switch ($comparison->getOperator()) {
         case Comparison::EQ:
         case Comparison::GT:
         case Comparison::GTE:
         case Comparison::IN:
         case Comparison::IS:
         case Comparison::LT:
         case Comparison::LTE:
         case Comparison::NEQ:
         case Comparison::NIN:
             $operator = self::$OPERATOR_MAPPING[$comparison->getOperator()];
             $value = $this->walkValue($comparison->getValue());
             return [$comparison->getField() => [$operator => $value]];
         default:
             throw new \RuntimeException('Unknown comparison operator: ' . $comparison->getOperator());
     }
 }
 /**
  * {@inheritdoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     list($type, $field) = $this->explodeCombinedFieldString($comparison->getField());
     $index = str_replace('.', '_', uniqid('', true));
     $joinField = sprintf('search.%sFields', $type);
     $joinAlias = $this->driver->getJoinAlias($type, $index);
     $this->qb->leftJoin($joinField, $joinAlias);
     $searchCondition = ['fieldName' => $field, 'condition' => Criteria::getSearchOperatorByComparisonOperator($comparison->getOperator()), 'fieldValue' => $value, 'fieldType' => $type];
     if ($type === Query::TYPE_TEXT) {
         if ($searchCondition['fieldValue'] === '') {
             $this->qb->setParameter('field' . $index, $searchCondition['fieldName']);
             return $joinAlias . '.field = :field' . $index;
         } else {
             return $this->driver->addTextField($this->qb, $index, $searchCondition, $this->setOrderBy);
         }
     }
     return $this->driver->addNonTextField($this->qb, $index, $searchCondition);
 }
 /**
  * @inheritDoc
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $this->dispatch($comparison->getValue());
     return array('field' => $comparison->getField(), 'value' => $value, 'operator' => $comparison->getOperator());
 }
 /**
  * {@inheritDoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     if (!isset($this->queryAliases[0])) {
         throw new QueryException('No aliases are set before invoking walkComparison().');
     }
     $field = $this->queryAliases[0] . '.' . $comparison->getField();
     foreach ($this->queryAliases as $alias) {
         if (strpos($comparison->getField() . '.', $alias . '.') === 0) {
             $field = $comparison->getField();
             break;
         }
     }
     $parameterName = str_replace('.', '_', $comparison->getField());
     foreach ($this->parameters as $parameter) {
         if ($parameter->getName() === $parameterName) {
             $parameterName .= '_' . count($this->parameters);
             break;
         }
     }
     $parameter = new Parameter($parameterName, $this->walkValue($comparison->getValue()));
     $placeholder = ':' . $parameterName;
     switch ($comparison->getOperator()) {
         case Comparison::IN:
             $this->parameters[] = $parameter;
             return $this->expr->in($field, $placeholder);
         case Comparison::NIN:
             $this->parameters[] = $parameter;
             return $this->expr->notIn($field, $placeholder);
         case Comparison::EQ:
         case Comparison::IS:
             if ($this->walkValue($comparison->getValue()) === null) {
                 return $this->expr->isNull($field);
             }
             $this->parameters[] = $parameter;
             return $this->expr->eq($field, $placeholder);
         case Comparison::NEQ:
             if ($this->walkValue($comparison->getValue()) === null) {
                 return $this->expr->isNotNull($field);
             }
             $this->parameters[] = $parameter;
             return $this->expr->neq($field, $placeholder);
         case Comparison::CONTAINS:
             $parameter->setValue('%' . $parameter->getValue() . '%', $parameter->getType());
             $this->parameters[] = $parameter;
             return $this->expr->like($field, $placeholder);
         default:
             $operator = self::convertComparisonOperator($comparison->getOperator());
             if ($operator) {
                 $this->parameters[] = $parameter;
                 return new Expr\Comparison($field, $operator, $placeholder);
             }
             throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
     }
 }
Beispiel #15
0
 /**
  * Returns the value from a Comparison. In case of a CONTAINS comparison,
  * the value is wrapped in %-signs, because it will be used in a LIKE clause.
  *
  * @param \Doctrine\Common\Collections\Expr\Comparison $comparison
  * @return mixed
  */
 protected function getValueFromComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     return $comparison->getOperator() == Comparison::CONTAINS ? "%{$value}%" : $value;
 }
 /**
  * Converts a comparison expression into the target query language output.
  *
  * @param Comparison $comparison
  *
  * @return mixed
  */
 public function walkComparison(Comparison $comparison)
 {
     $tokenName = uniqid(':');
     $token = [$tokenName => ['name' => $tokenName, 'field' => $comparison->getField(), 'value' => $comparison->getValue()->getValue()]];
     return ['expression' => $comparison->getField() . ' ' . $comparison->getOperator() . ' ' . $tokenName . '', 'tokens' => $token];
 }
 /**
  * {@inheritDoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $parameterName = str_replace('.', '_', $comparison->getField());
     $parameter = new Parameter($parameterName, $this->walkValue($comparison->getValue()));
     $placeholder = ':' . $parameterName;
     switch ($comparison->getOperator()) {
         case Comparison::IN:
             $this->parameters[] = $parameter;
             return $this->expr->in($this->rootAlias . '.' . $comparison->getField(), $placeholder);
         case Comparison::NIN:
             $this->parameters[] = $parameter;
             return $this->expr->notIn($this->rootAlias . '.' . $comparison->getField(), $placeholder);
         case Comparison::EQ:
         case Comparison::IS:
             if ($this->walkValue($comparison->getValue()) === null) {
                 return $this->expr->isNull($this->rootAlias . '.' . $comparison->getField());
             }
             $this->parameters[] = $parameter;
             return $this->expr->eq($this->rootAlias . '.' . $comparison->getField(), $placeholder);
         case Comparison::NEQ:
             if ($this->walkValue($comparison->getValue()) === null) {
                 return $this->expr->isNotNull($this->rootAlias . '.' . $comparison->getField());
             }
             $this->parameters[] = $parameter;
             return $this->expr->neq($this->rootAlias . '.' . $comparison->getField(), $placeholder);
         default:
             $operator = self::convertComparisonOperator($comparison->getOperator());
             if ($operator) {
                 $this->parameters[] = $parameter;
                 return new Expr\Comparison($this->rootAlias . '.' . $comparison->getField(), $operator, $placeholder);
             }
             throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
     }
 }