Spot\Query::parseWhereToSQLFragments PHP Method

parseWhereToSQLFragments() private method

Parse array-syntax WHERE conditions and translate them to DBAL QueryBuilder syntax
private parseWhereToSQLFragments ( array $where, boolean $useAlias = true ) : array
$where array Array of conditions for this clause
$useAlias boolean
return array SQL fragment strings for WHERE clause
    private function parseWhereToSQLFragments(array $where, $useAlias = true)
    {
        $builder = $this->builder();
        $sqlFragments = [];
        foreach ($where as $column => $value) {
            // Column name with comparison operator
            $colData = explode(' ', $column);
            $operator = isset($colData[1]) ? $colData[1] : '=';
            if (count($colData) > 2) {
                $operator = array_pop($colData);
                $colData = [implode(' ', $colData), $operator];
            }
            $operatorCallable = $this->getWhereOperatorCallable(strtolower($operator));
            if (!$operatorCallable) {
                throw new \InvalidArgumentException("Unsupported operator '" . $operator . "' " . "in WHERE clause. If you want to use a custom operator, you " . "can add one with \\Spot\\Query::addWhereOperator('" . $operator . "', " . "function (QueryBuilder \$builder, \$column, \$value) { ... }); ");
            }
            $col = $colData[0];
            // Handle DateTime value objects
            if ($value instanceof \DateTime) {
                $mapper = $this->mapper();
                $convertedValues = $mapper->convertToDatabaseValues($mapper->entity(), [$col => $value]);
                $value = $convertedValues[$col];
            }
            // Prefix column name with alias
            if ($useAlias === true) {
                $col = $this->fieldWithAlias($col);
            }
            $sqlFragments[] = $operatorCallable($builder, $col, $value);
        }
        return $sqlFragments;
    }