Handle empty table name in where clause

This commit is contained in:
Dennis Eichhorn 2018-08-18 12:41:53 +02:00
parent 1caf381603
commit de2fdb61bc

View File

@ -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, ', ');
}
}