diff --git a/DataStorage/Database/Query/Grammar/Grammar.php b/DataStorage/Database/Query/Grammar/Grammar.php index e462a20de..2552e7684 100644 --- a/DataStorage/Database/Query/Grammar/Grammar.php +++ b/DataStorage/Database/Query/Grammar/Grammar.php @@ -281,10 +281,15 @@ class Grammar extends GrammarAbstract $expression = ''; if (!$first) { - $expression = ' ' . strtoupper($element['boolean']) . ' '; + $expression = ' ' . \strtoupper($element['boolean']) . ' '; } - if (is_string($element['column'])) { + if (\is_string($element['column'])) { + // handle bug when no table is specified in the where column + if (count($query->from) === 1 && \stripos($element['column'], '.') === false) { + $element['column'] = $query->from[0] . '.' . $element['column']; + } + $expression .= $this->compileSystem($element['column'], $query->getPrefix()); } elseif ($element['column'] instanceof \Closure) { $expression .= $element['column'](); @@ -297,9 +302,9 @@ class Grammar extends GrammarAbstract // todo: handle IN(...) as operator if (isset($element['value'])) { - $expression .= ' ' . strtoupper($element['operator']) . ' ' . $this->compileValue($query, $element['value'], $query->getPrefix()); + $expression .= ' ' . \strtoupper($element['operator']) . ' ' . $this->compileValue($query, $element['value'], $query->getPrefix()); } else { - $operator = strtoupper($element['operator']) === '=' ? 'IS' : 'IS NOT'; + $operator = \strtoupper($element['operator']) === '=' ? 'IS' : 'IS NOT'; $expression .= ' ' . $operator . ' ' . $this->compileValue($query, $element['value'], $query->getPrefix()); } @@ -327,29 +332,29 @@ class Grammar extends GrammarAbstract */ protected function compileValue(Builder $query, $value, string $prefix = '') : string { - if (is_string($value)) { - if (strpos($value, ':') === 0) { + if (\is_string($value)) { + if (\strpos($value, ':') === 0) { return $value; } return $query->quote($value); - } elseif (is_int($value)) { + } elseif (\is_int($value)) { return (string) $value; - } elseif (is_array($value)) { + } elseif (\is_array($value)) { $values = ''; foreach ($value as $val) { $values .= $this->compileValue($query, $val, $prefix) . ', '; } - return '(' . rtrim($values, ', ') . ')'; + return '(' . \rtrim($values, ', ') . ')'; } elseif ($value instanceof \DateTime) { return $query->quote($value->format('Y-m-d H:i:s')); } elseif ($value === null) { return 'NULL'; - } elseif (is_bool($value)) { + } elseif (\is_bool($value)) { return (string) ((int) $value); - } elseif (is_float($value)) { + } elseif (\is_float($value)) { return (string) $value; } elseif ($value instanceof Column) { return $this->compileSystem($value->getColumn(), $prefix); @@ -411,7 +416,7 @@ class Grammar extends GrammarAbstract $expression .= $this->compileSystem($group, $query->getPrefix()) . ', '; } - $expression = rtrim($expression, ', '); + $expression = \rtrim($expression, ', '); return 'GROUP BY ' . $expression; } @@ -435,7 +440,7 @@ class Grammar extends GrammarAbstract $expression .= $this->compileSystem($column, $query->getPrefix()) . ', '; } - $expression = rtrim($expression, ', '); + $expression = \rtrim($expression, ', '); $expression .= ' ' . $key . ', '; } @@ -443,7 +448,7 @@ class Grammar extends GrammarAbstract return ''; } - $expression = rtrim($expression, ', '); + $expression = \rtrim($expression, ', '); return 'ORDER BY ' . $expression; } @@ -495,7 +500,7 @@ class Grammar extends GrammarAbstract return ''; } - return '(' . rtrim($cols, ', ') . ')'; + return '(' . \rtrim($cols, ', ') . ')'; } /** @@ -520,7 +525,7 @@ class Grammar extends GrammarAbstract return ''; } - return 'VALUES ' . rtrim($vals, ', '); + return 'VALUES ' . \rtrim($vals, ', '); } /** @@ -548,6 +553,6 @@ class Grammar extends GrammarAbstract return ''; } - return 'SET ' . rtrim($vals, ', '); + return 'SET ' . \rtrim($vals, ', '); } }