public static function Condition::translateCondition in Drupal 8
Same name in this branch
- 8 core/lib/Drupal/Core/Entity/Query/Sql/Condition.php \Drupal\Core\Entity\Query\Sql\Condition::translateCondition()
- 8 core/lib/Drupal/Core/Entity/Query/Sql/pgsql/Condition.php \Drupal\Core\Entity\Query\Sql\pgsql\Condition::translateCondition()
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Entity/Query/Sql/Condition.php \Drupal\Core\Entity\Query\Sql\Condition::translateCondition()
Translates the string operators to SQL equivalents.
Parameters
array $condition: The condition array.
\Drupal\Core\Database\Query\SelectInterface $sql_query: Select query instance.
bool|null $case_sensitive: If the condition should be case sensitive or not, NULL if the field does not define it.
See also
\Drupal\Core\Database\Query\ConditionInterface::condition()
2 calls to Condition::translateCondition()
- Condition::compile in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ Condition.php - Compiles this conditional clause.
- Condition::translateCondition in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ pgsql/ Condition.php - Translates the string operators to SQL equivalents.
1 method overrides Condition::translateCondition()
- Condition::translateCondition in core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ pgsql/ Condition.php - Translates the string operators to SQL equivalents.
File
- core/
lib/ Drupal/ Core/ Entity/ Query/ Sql/ Condition.php, line 94
Class
- Condition
- Implements entity query conditions for SQL databases.
Namespace
Drupal\Core\Entity\Query\SqlCode
public static function translateCondition(&$condition, SelectInterface $sql_query, $case_sensitive) {
// // There is nothing we can do for IN ().
if (is_array($condition['value'])) {
return;
}
// Ensure that the default operator is set to simplify the cases below.
if (empty($condition['operator'])) {
$condition['operator'] = '=';
}
switch ($condition['operator']) {
case '=':
// If a field explicitly requests that queries should not be case
// sensitive, use the LIKE operator, otherwise keep =.
if ($case_sensitive === FALSE) {
$condition['value'] = $sql_query
->escapeLike($condition['value']);
$condition['operator'] = 'LIKE';
}
break;
case '<>':
// If a field explicitly requests that queries should not be case
// sensitive, use the NOT LIKE operator, otherwise keep <>.
if ($case_sensitive === FALSE) {
$condition['value'] = $sql_query
->escapeLike($condition['value']);
$condition['operator'] = 'NOT LIKE';
}
break;
case 'STARTS_WITH':
if ($case_sensitive) {
$condition['operator'] = 'LIKE BINARY';
}
else {
$condition['operator'] = 'LIKE';
}
$condition['value'] = $sql_query
->escapeLike($condition['value']) . '%';
break;
case 'CONTAINS':
if ($case_sensitive) {
$condition['operator'] = 'LIKE BINARY';
}
else {
$condition['operator'] = 'LIKE';
}
$condition['value'] = '%' . $sql_query
->escapeLike($condition['value']) . '%';
break;
case 'ENDS_WITH':
if ($case_sensitive) {
$condition['operator'] = 'LIKE BINARY';
}
else {
$condition['operator'] = 'LIKE';
}
$condition['value'] = '%' . $sql_query
->escapeLike($condition['value']);
break;
}
}