You are here

public static function Condition::translateCondition in Drupal 9

Same name in this branch
  1. 9 core/lib/Drupal/Core/Entity/Query/Sql/Condition.php \Drupal\Core\Entity\Query\Sql\Condition::translateCondition()
  2. 9 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
  1. 8 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 103

Class

Condition
Implements entity query conditions for SQL databases.

Namespace

Drupal\Core\Entity\Query\Sql

Code

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;
  }
}