Skip to content

Commit 083aa25

Browse files
committed
Subqueries in BaseBuilder. BaseBuilder::cleanClone()
Signed-off-by: Andrey Pyzhikov <5071@mail.ru>
1 parent ae12df5 commit 083aa25

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

system/Database/BaseBuilder.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -707,9 +707,8 @@ protected function whereHaving(string $qb_key, $key, $value = null, string $type
707707

708708
if ($v instanceof Closure)
709709
{
710-
$builder = clone $this;
711-
$builder->from([], true)->resetQuery();
712-
$v = '(' . str_replace("\n", ' ', $v($builder)->getCompiledSelect()) . ')';
710+
$builder = $this->cleanClone();
711+
$v = '(' . str_replace("\n", ' ', $v($builder)->getCompiledSelect()) . ')';
713712
}
714713
else
715714
{
@@ -849,9 +848,8 @@ protected function _whereIn(string $key = null, $values = null, bool $not = fals
849848

850849
if ($values instanceof Closure)
851850
{
852-
$builder = clone $this;
853-
$builder->from([], true)->resetQuery();
854-
$ok = str_replace("\n", ' ', $values($builder)->getCompiledSelect());
851+
$builder = $this->cleanClone();
852+
$ok = str_replace("\n", ' ', $values($builder)->getCompiledSelect());
855853
}
856854
else
857855
{
@@ -3030,4 +3028,16 @@ protected function setBind(string $key, $value = null, bool $escape = true): str
30303028
}
30313029

30323030
//--------------------------------------------------------------------
3031+
3032+
/**
3033+
* Returns a clone of a Base Builder with reset query builder values.
3034+
*
3035+
* @return BaseBuilder
3036+
*/
3037+
protected function cleanClone()
3038+
{
3039+
return (clone $this)->from([], true)->resetQuery();
3040+
}
3041+
3042+
//--------------------------------------------------------------------
30333043
}

0 commit comments

Comments
 (0)