public static function FilterFactory::filterFromCondition in Elasticsearch Connector 8.2
Same name and namespace in other branches
- 8.7 src/ElasticSearch/Parameters/Factory/FilterFactory.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Factory\FilterFactory::filterFromCondition()
- 8.5 src/ElasticSearch/Parameters/Factory/FilterFactory.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Factory\FilterFactory::filterFromCondition()
- 8.6 src/ElasticSearch/Parameters/Factory/FilterFactory.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Factory\FilterFactory::filterFromCondition()
Get query by Condition instance.
Parameters
Condition $condition:
Return value
array
Throws
\Exception
1 call to FilterFactory::filterFromCondition()
- SearchBuilder::getQueryFilters in src/
ElasticSearch/ Parameters/ Builder/ SearchBuilder.php - Recursively parse Search API condition group.
File
- src/
ElasticSearch/ Parameters/ Factory/ FilterFactory.php, line 21
Class
- FilterFactory
- Class FilterFactory.
Namespace
Drupal\elasticsearch_connector\ElasticSearch\Parameters\FactoryCode
public static function filterFromCondition(Condition $condition) {
// Handles "empty", "not empty" operators.
if (!$condition
->getValue()) {
switch ($condition
->getOperator()) {
case '<>':
$filter = [
'exists' => [
'field' => $condition
->getField(),
],
];
break;
case '=':
$filter = [
'not' => [
'filter' => [
'exists' => [
'field' => $condition
->getField(),
],
],
],
];
break;
default:
throw new \Exception(t('Value is empty for :field_id! Incorrect filter criteria is using for searching!', [
':field_id' => $condition
->getField(),
]));
}
}
else {
switch ($condition
->getOperator()) {
case '=':
$filter = [
'term' => [
$condition
->getField() => $condition
->getValue(),
],
];
break;
case 'IN':
$filter = [
'terms' => [
$condition
->getField() => array_values($condition
->getValue()),
],
];
break;
case '<>':
$filter = [
'not' => [
'filter' => [
'term' => [
$condition
->getField() => $condition
->getValue(),
],
],
],
];
break;
case '>':
$filter = [
'range' => [
$condition
->getField() => [
'from' => $condition
->getValue(),
'to' => NULL,
'include_lower' => FALSE,
'include_upper' => FALSE,
],
],
];
break;
case '>=':
$filter = [
'range' => [
$condition
->getField() => [
'from' => $condition
->getValue(),
'to' => NULL,
'include_lower' => TRUE,
'include_upper' => FALSE,
],
],
];
break;
case '<':
$filter = [
'range' => [
$condition
->getField() => [
'from' => NULL,
'to' => $condition
->getValue(),
'include_lower' => FALSE,
'include_upper' => FALSE,
],
],
];
break;
case '<=':
$filter = [
'range' => [
$condition
->getField() => [
'from' => NULL,
'to' => $condition
->getValue(),
'include_lower' => FALSE,
'include_upper' => TRUE,
],
],
];
break;
default:
throw new \Exception(t('Undefined operator :field_operator for :field_id field! Incorrect filter criteria is using for searching!', [
':field_operator' => $condition
->getOperator(),
':field_id' => $condition
->getField(),
]));
}
}
return $filter;
}