Skip to content

Commit 99f0dd5

Browse files
committed
Fixes for newQuery().
1 parent 96b7f13 commit 99f0dd5

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

system/Database/BaseBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ public function fromSubquery(BaseBuilder $from, string $alias): self
577577
{
578578
$table = $this->buildSubquery($from, true, $alias);
579579

580-
$this->trackAliases($table);
580+
$this->db->addTableAlias($alias);
581581
$this->QBFrom[] = $table;
582582

583583
return $this;

system/Database/BaseConnection.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,12 @@ public function table($tableName)
882882
*/
883883
public function newQuery(): BaseBuilder
884884
{
885-
return $this->table(',')->from([], true);
885+
// save table aliases
886+
$tempAliases = $this->aliasedTables;
887+
$builder = $this->table(',')->from([], true);
888+
$this->aliasedTables = $tempAliases;
889+
890+
return $builder;
886891
}
887892

888893
/**

tests/system/Database/Builder/PrefixTest.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace CodeIgniter\Database\Builder;
1313

14+
use CodeIgniter\Database\BaseBuilder;
1415
use CodeIgniter\Test\CIUnitTestCase;
1516
use CodeIgniter\Test\Mock\MockConnection;
1617

@@ -50,7 +51,7 @@ public function testPrefixesSetOnTableNamesWithWhereClause()
5051
$this->assertSame($expectedBinds, $builder->getBinds());
5152
}
5253

53-
public function testPrefixWithSubquery()
54+
public function testPrefixWithSubquery(): void
5455
{
5556
$expected = <<<'NOWDOC'
5657
SELECT "u"."id", "u"."name", (SELECT 1 FROM "ci_users" "sub" WHERE "sub"."id" = "u"."id") "one"
@@ -69,4 +70,20 @@ public function testPrefixWithSubquery()
6970

7071
$this->assertSame($expected, $builder->getCompiledSelect());
7172
}
73+
74+
public function testPrefixWithNewQuery(): void
75+
{
76+
$expectedSQL = <<<'NOWDOC'
77+
SELECT "users_1"."id", "name"
78+
FROM (SELECT "u"."id", "u"."name" FROM "ci_users" "u") "users_1"
79+
WHERE "users_1"."id" > 10
80+
NOWDOC;
81+
82+
$subquery = (new BaseBuilder('users u', $this->db))->select('u.id, u.name');
83+
$builder = $this->db->newQuery()->fromSubquery($subquery, 'users_1')
84+
->select('users_1.id, name')
85+
->where('users_1.id > ', 10);
86+
87+
$this->assertSame($expectedSQL, $builder->getCompiledSelect());
88+
}
7289
}

0 commit comments

Comments
 (0)