Nextras\Orm\Mapper\Dbal\QueryBuilderHelper::processWhereExpression PHP Method

processWhereExpression() public method

Transforms orm condition and adds it to QueryBuilder.
public processWhereExpression ( string $expression, mixed $value, Nextras\Dbal\QueryBuilder\QueryBuilder $builder, boolean &$distinctNeeded )
$expression string
$value mixed
$builder Nextras\Dbal\QueryBuilder\QueryBuilder
$distinctNeeded boolean
    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);
    }