function Condition::translateCondition

Same name in this branch
  1. 8.9.x core/lib/Drupal/Core/Entity/Query/Sql/pgsql/Condition.php \Drupal\Core\Entity\Query\Sql\pgsql\Condition::translateCondition()
Same name in other branches
  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()
  3. 10 core/lib/Drupal/Core/Entity/Query/Sql/Condition.php \Drupal\Core\Entity\Query\Sql\Condition::translateCondition()
  4. 10 core/lib/Drupal/Core/Entity/Query/Sql/pgsql/Condition.php \Drupal\Core\Entity\Query\Sql\pgsql\Condition::translateCondition()
  5. 11.x core/lib/Drupal/Core/Entity/Query/Sql/Condition.php \Drupal\Core\Entity\Query\Sql\Condition::translateCondition()
  6. 11.x core/lib/Drupal/Core/Entity/Query/Sql/pgsql/Condition.php \Drupal\Core\Entity\Query\Sql\pgsql\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\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;
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.