protected function Condition::mapConditionOperator in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Database/Query/Condition.php \Drupal\Core\Database\Query\Condition::mapConditionOperator()
Gets any special processing requirements for the condition operator.
Some condition types require special processing, such as IN, because the value data they pass in is not a simple value. This is a simple overridable lookup function.
Parameters
$operator: The condition operator, such as "IN", "BETWEEN", etc. Case-sensitive.
Return value
array The extra handling directives for the specified operator or an empty array if there are no extra handling directives.
1 call to Condition::mapConditionOperator()
- Condition::compile in core/
lib/ Drupal/ Core/ Database/ Query/ Condition.php - Compiles the saved conditions for later retrieval.
File
- core/
lib/ Drupal/ Core/ Database/ Query/ Condition.php, line 304 - Contains \Drupal\Core\Database\Query\Condition.
Class
- Condition
- Generic class for a series of conditions in a query.
Namespace
Drupal\Core\Database\QueryCode
protected function mapConditionOperator($operator) {
// $specials does not use drupal_static as its value never changes.
static $specials = array(
'BETWEEN' => array(
'delimiter' => ' AND ',
),
'IN' => array(
'delimiter' => ', ',
'prefix' => ' (',
'postfix' => ')',
),
'NOT IN' => array(
'delimiter' => ', ',
'prefix' => ' (',
'postfix' => ')',
),
'EXISTS' => array(
'prefix' => ' (',
'postfix' => ')',
),
'NOT EXISTS' => array(
'prefix' => ' (',
'postfix' => ')',
),
'IS NULL' => array(
'use_value' => FALSE,
),
'IS NOT NULL' => array(
'use_value' => FALSE,
),
// Use backslash for escaping wildcard characters.
'LIKE' => array(
'postfix' => " ESCAPE '\\\\'",
),
'NOT LIKE' => array(
'postfix' => " ESCAPE '\\\\'",
),
// These ones are here for performance reasons.
'=' => array(),
'<' => array(),
'>' => array(),
'>=' => array(),
'<=' => array(),
);
if (isset($specials[$operator])) {
$return = $specials[$operator];
}
else {
// We need to upper case because PHP index matches are case sensitive but
// do not need the more expensive Unicode::strtoupper() because SQL statements are ASCII.
$operator = strtoupper($operator);
$return = isset($specials[$operator]) ? $specials[$operator] : array();
}
$return += array(
'operator' => $operator,
);
return $return;
}