public Condition::compile($conditionContainer)
Compiles this conditional clause.
Parameters
$query: The query object this conditional clause belongs to.
Overrides ConditionInterface::compile
File
- core/lib/Drupal/Core/Entity/Query/Sql/Condition.php, line 25
Class
- Condition
- Implements entity query conditions for SQL databases.
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 28 29 30 31 32 33 | 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 = $this ->query->getTables( $sql_query ); foreach ( $this ->conditions as $condition ) { if ( $condition [ 'field' ] instanceof ConditionInterface) { $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 ); $conditionContainer ->condition( $sql_condition ); } else { $type = strtoupper ( $this ->conjunction) == 'OR' || $condition [ 'operator' ] == 'IS NULL' ? 'LEFT' : 'INNER' ; $field = $tables ->addField( $condition [ 'field' ], $type , $condition [ 'langcode' ]); $condition [ 'real_field' ] = $field ; static ::translateCondition( $condition , $sql_query , $tables ->isFieldCaseSensitive( $condition [ 'field' ])); // Add the translated conditions back to the condition container. if (isset( $condition [ 'where' ]) && isset( $condition [ 'where_args' ])) { $conditionContainer ->where( $condition [ 'where' ], $condition [ 'where_args' ]); } else { $conditionContainer ->condition( $field , $condition [ 'value' ], $condition [ 'operator' ]); } } } } |
Please login to continue.