public ConditionAggregate::compile($conditionContainer)
Compiles this conditional clause.
Parameters
$query: The query object this conditional clause belongs to.
Overrides ConditionAggregateInterface::compile
File
- core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php, line 19
Class
- ConditionAggregate
- Defines the aggregate condition for sql based storage.
Namespace
Drupal\Core\Entity\Query\Sql
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public function compile( $conditionContainer ) { // If this is not the top level condition group then the sql query is // added to the $conditionContainer object by this function itself. The // SQL query object is only necessary to pass to Query::addField() so it // can join tables as necessary. On the other hand, conditions need to be // added to the $conditionContainer object to keep grouping. $sql_query = ( $conditionContainer instanceof SelectInterface) ? $conditionContainer : $conditionContainer ->sqlQuery; $tables = new Tables( $sql_query ); foreach ( $this ->conditions as $condition ) { if ( $condition [ 'field' ] instanceof ConditionAggregateInterface) { $sql_condition = new SqlCondition( $condition [ 'field' ]->getConjunction()); // Add the SQL query to the object before calling this method again. $sql_condition ->sqlQuery = $sql_query ; $condition [ 'field' ]->compile( $sql_condition ); $sql_query ->condition( $sql_condition ); } else { $type = (( strtoupper ( $this ->conjunction) == 'OR' ) || ( $condition [ 'operator' ] == 'IS NULL' )) ? 'LEFT' : 'INNER' ; $field = $tables ->addField( $condition [ 'field' ], $type , $condition [ 'langcode' ]); $condition_class = QueryBase::getClass( $this ->namespaces, 'Condition' ); $condition_class ::translateCondition( $condition , $sql_query , $tables ->isFieldCaseSensitive( $condition [ 'field' ])); $function = $condition [ 'function' ]; $placeholder = ':db_placeholder_' . $conditionContainer ->nextPlaceholder(); $conditionContainer ->having( "$function($field) {$condition['operator']} $placeholder" , array ( $placeholder => $condition [ 'value' ])); } } } |
Please login to continue.