public static Condition::translateCondition(&$condition, SelectInterface $sql_query, $case_sensitive)
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()
File
- core/lib/Drupal/Core/Entity/Query/Sql/Condition.php, line 86
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; } }
Please login to continue.