Skip to content

Commit 4e5cf20

Browse files
committed
Fix logic for RawSql
Allow RawSql for both key and value. When key only and value is null then we treat a little different.
1 parent 2303685 commit 4e5cf20

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

system/Database/BaseBuilder.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -728,9 +728,16 @@ public function orWhere($key, $value = null, ?bool $escape = null)
728728
*/
729729
protected function whereHaving(string $qbKey, $key, $value = null, string $type = 'AND ', ?bool $escape = null)
730730
{
731+
$rawSqlOnly = false;
732+
731733
if ($key instanceof RawSql) {
732-
$keyValue = [(string) $key => $key];
733-
$escape = false;
734+
if ($value === null) {
735+
$keyValue = [(string) $key => $key];
736+
$rawSqlOnly = true;
737+
} else {
738+
$keyValue = [(string) $key => $value];
739+
}
740+
$escape = false;
734741
} elseif (! is_array($key)) {
735742
$keyValue = [$key => $value];
736743
} else {
@@ -745,7 +752,7 @@ protected function whereHaving(string $qbKey, $key, $value = null, string $type
745752
foreach ($keyValue as $k => $v) {
746753
$prefix = empty($this->{$qbKey}) ? $this->groupGetType('') : $this->groupGetType($type);
747754

748-
if ($v instanceof RawSql) {
755+
if ($rawSqlOnly === true) {
749756
$k = '';
750757
$op = '';
751758
} elseif ($v !== null) {

0 commit comments

Comments
 (0)