eZ\Publish\Core\Search\Legacy\Content\Common\Gateway\CriterionHandler\FieldValue\Handler::handle PHP Метод

handle() публичный Метод

Generates query expression for operator and value of a Field Criterion.
public handle ( eZ\Publish\Core\Persistence\Database\SelectQuery $query, eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion, string $column ) : eZ\Publish\Core\Persistence\Database\Expression
$query eZ\Publish\Core\Persistence\Database\SelectQuery
$criterion eZ\Publish\API\Repository\Values\Content\Query\Criterion
$column string
Результат eZ\Publish\Core\Persistence\Database\Expression
    public function handle(SelectQuery $query, Criterion $criterion, $column)
    {
        $column = $this->dbHandler->quoteColumn($column);
        switch ($criterion->operator) {
            case Criterion\Operator::IN:
                $filter = $query->expr->in($column, array_map(array($this, 'lowercase'), $criterion->value));
                break;
            case Criterion\Operator::BETWEEN:
                $filter = $query->expr->between($column, $query->bindValue($this->lowercase($criterion->value[0])), $query->bindValue($this->lowercase($criterion->value[1])));
                break;
            case Criterion\Operator::EQ:
            case Criterion\Operator::GT:
            case Criterion\Operator::GTE:
            case Criterion\Operator::LT:
            case Criterion\Operator::LTE:
            case Criterion\Operator::LIKE:
                $operatorFunction = $this->comparatorMap[$criterion->operator];
                $filter = $query->expr->{$operatorFunction}($column, $query->bindValue($this->lowercase($criterion->value)));
                break;
            case Criterion\Operator::CONTAINS:
                $filter = $query->expr->like($column, $query->bindValue('%' . $this->lowercase($criterion->value) . '%'));
                break;
            default:
                throw new RuntimeException("Unknown operator '{$criterion->operator}' for Field criterion handler.");
        }
        return $filter;
    }

Usage Example

Пример #1
0
 /**
  * Converts the criteria into query fragments
  *
  * @throws \RuntimeException if Criterion is not applicable to its target
  *
  * @param string $fieldTypeIdentifier
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param string $column
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function convertCriteria($fieldTypeIdentifier, SelectQuery $query, Criterion $criterion, $column)
 {
     if ($this->registry->has($fieldTypeIdentifier)) {
         return $this->registry->get($fieldTypeIdentifier)->handle($query, $criterion, $column);
     }
     if ($this->defaultHandler === null) {
         throw new RuntimeException("No conversion for a field type '{$fieldTypeIdentifier}' found.");
     }
     return $this->defaultHandler->handle($query, $criterion, $column);
 }
All Usage Examples Of eZ\Publish\Core\Search\Legacy\Content\Common\Gateway\CriterionHandler\FieldValue\Handler::handle