public function processWhereExpression($expression, $value, QueryBuilder $builder, &$distinctNeeded)
{
list($chain, $operator, $sourceEntity) = ConditionParserHelper::parseCondition($expression);
if ($value instanceof Traversable) {
$value = iterator_to_array($value);
} elseif ($value instanceof IEntity) {
$value = $value->getValue('id');
}
if (is_array($value) && count($value) === 0) {
$builder->andWhere($operator === ConditionParserHelper::OPERATOR_EQUAL ? '1=0' : '1=1');
return;
}
$sqlExpresssion = $this->normalizeAndAddJoins($chain, $sourceEntity, $builder, $distinctNeeded, $value, $modifier);
$operator = $this->getSqlOperator($value, $operator);
$builder->andWhere($sqlExpresssion . $operator . $modifier, $value);
}