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 =
$this->query->
getTables($sql_query);
foreach ($this->conditions
as $condition) { if ($condition['field'
] instanceof ConditionInterface
) { $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'
]->nestedInsideOrCondition =
$this->nestedInsideOrCondition ||
strtoupper($this->conjunction
) === 'OR';
$condition['field'
]->
compile($sql_condition);
$conditionContainer->
condition($sql_condition);
} else { $type =
$this->nestedInsideOrCondition ||
strtoupper($this->conjunction
) === 'OR' ||
$condition['operator'
] === 'IS NULL' ? 'LEFT' : 'INNER';
$field =
$tables->
addField($condition['field'
],
$type,
$condition['langcode'
]);
// If the field is trying to query on %delta for a single value field
// then the only supported delta is 0. No other value than 0 makes