/**
* {@inheritdoc}
*/
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 :
$this->sqlQuery;
$tables =
new Tables($sql_query);
foreach ($this->conditions
as $condition) { if ($condition['field'
] instanceof ConditionAggregateInterface
) { $sql_condition =
$sql_query->
getConnection()->
condition($condition['field'
]->
getConjunction());
// Add the SQL query to the object before calling this method again.
$condition['field'
]->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'
]);