mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-06 04:28:41 +00:00
Handle empty table name in where clause
This commit is contained in:
parent
1caf381603
commit
de2fdb61bc
|
|
@ -281,10 +281,15 @@ class Grammar extends GrammarAbstract
|
||||||
$expression = '';
|
$expression = '';
|
||||||
|
|
||||||
if (!$first) {
|
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());
|
$expression .= $this->compileSystem($element['column'], $query->getPrefix());
|
||||||
} elseif ($element['column'] instanceof \Closure) {
|
} elseif ($element['column'] instanceof \Closure) {
|
||||||
$expression .= $element['column']();
|
$expression .= $element['column']();
|
||||||
|
|
@ -297,9 +302,9 @@ class Grammar extends GrammarAbstract
|
||||||
// todo: handle IN(...) as operator
|
// todo: handle IN(...) as operator
|
||||||
|
|
||||||
if (isset($element['value'])) {
|
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 {
|
} else {
|
||||||
$operator = strtoupper($element['operator']) === '=' ? 'IS' : 'IS NOT';
|
$operator = \strtoupper($element['operator']) === '=' ? 'IS' : 'IS NOT';
|
||||||
$expression .= ' ' . $operator . ' ' . $this->compileValue($query, $element['value'], $query->getPrefix());
|
$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
|
protected function compileValue(Builder $query, $value, string $prefix = '') : string
|
||||||
{
|
{
|
||||||
if (is_string($value)) {
|
if (\is_string($value)) {
|
||||||
if (strpos($value, ':') === 0) {
|
if (\strpos($value, ':') === 0) {
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $query->quote($value);
|
return $query->quote($value);
|
||||||
} elseif (is_int($value)) {
|
} elseif (\is_int($value)) {
|
||||||
return (string) $value;
|
return (string) $value;
|
||||||
} elseif (is_array($value)) {
|
} elseif (\is_array($value)) {
|
||||||
$values = '';
|
$values = '';
|
||||||
|
|
||||||
foreach ($value as $val) {
|
foreach ($value as $val) {
|
||||||
$values .= $this->compileValue($query, $val, $prefix) . ', ';
|
$values .= $this->compileValue($query, $val, $prefix) . ', ';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '(' . rtrim($values, ', ') . ')';
|
return '(' . \rtrim($values, ', ') . ')';
|
||||||
} elseif ($value instanceof \DateTime) {
|
} elseif ($value instanceof \DateTime) {
|
||||||
return $query->quote($value->format('Y-m-d H:i:s'));
|
return $query->quote($value->format('Y-m-d H:i:s'));
|
||||||
} elseif ($value === null) {
|
} elseif ($value === null) {
|
||||||
return 'NULL';
|
return 'NULL';
|
||||||
} elseif (is_bool($value)) {
|
} elseif (\is_bool($value)) {
|
||||||
return (string) ((int) $value);
|
return (string) ((int) $value);
|
||||||
} elseif (is_float($value)) {
|
} elseif (\is_float($value)) {
|
||||||
return (string) $value;
|
return (string) $value;
|
||||||
} elseif ($value instanceof Column) {
|
} elseif ($value instanceof Column) {
|
||||||
return $this->compileSystem($value->getColumn(), $prefix);
|
return $this->compileSystem($value->getColumn(), $prefix);
|
||||||
|
|
@ -411,7 +416,7 @@ class Grammar extends GrammarAbstract
|
||||||
$expression .= $this->compileSystem($group, $query->getPrefix()) . ', ';
|
$expression .= $this->compileSystem($group, $query->getPrefix()) . ', ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$expression = rtrim($expression, ', ');
|
$expression = \rtrim($expression, ', ');
|
||||||
|
|
||||||
return 'GROUP BY ' . $expression;
|
return 'GROUP BY ' . $expression;
|
||||||
}
|
}
|
||||||
|
|
@ -435,7 +440,7 @@ class Grammar extends GrammarAbstract
|
||||||
$expression .= $this->compileSystem($column, $query->getPrefix()) . ', ';
|
$expression .= $this->compileSystem($column, $query->getPrefix()) . ', ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$expression = rtrim($expression, ', ');
|
$expression = \rtrim($expression, ', ');
|
||||||
$expression .= ' ' . $key . ', ';
|
$expression .= ' ' . $key . ', ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -443,7 +448,7 @@ class Grammar extends GrammarAbstract
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$expression = rtrim($expression, ', ');
|
$expression = \rtrim($expression, ', ');
|
||||||
|
|
||||||
return 'ORDER BY ' . $expression;
|
return 'ORDER BY ' . $expression;
|
||||||
}
|
}
|
||||||
|
|
@ -495,7 +500,7 @@ class Grammar extends GrammarAbstract
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '(' . rtrim($cols, ', ') . ')';
|
return '(' . \rtrim($cols, ', ') . ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -520,7 +525,7 @@ class Grammar extends GrammarAbstract
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'VALUES ' . rtrim($vals, ', ');
|
return 'VALUES ' . \rtrim($vals, ', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -548,6 +553,6 @@ class Grammar extends GrammarAbstract
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'SET ' . rtrim($vals, ', ');
|
return 'SET ' . \rtrim($vals, ', ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user