mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
Fixes for newQuery().
This commit is contained in:
parent
96b7f13f7a
commit
99f0dd5671
@ -577,7 +577,7 @@ class BaseBuilder
|
||||
{
|
||||
$table = $this->buildSubquery($from, true, $alias);
|
||||
|
||||
$this->trackAliases($table);
|
||||
$this->db->addTableAlias($alias);
|
||||
$this->QBFrom[] = $table;
|
||||
|
||||
return $this;
|
||||
|
@ -882,7 +882,12 @@ abstract class BaseConnection implements ConnectionInterface
|
||||
*/
|
||||
public function newQuery(): BaseBuilder
|
||||
{
|
||||
return $this->table(',')->from([], true);
|
||||
// save table aliases
|
||||
$tempAliases = $this->aliasedTables;
|
||||
$builder = $this->table(',')->from([], true);
|
||||
$this->aliasedTables = $tempAliases;
|
||||
|
||||
return $builder;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace CodeIgniter\Database\Builder;
|
||||
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use CodeIgniter\Test\Mock\MockConnection;
|
||||
|
||||
@ -50,7 +51,7 @@ final class PrefixTest extends CIUnitTestCase
|
||||
$this->assertSame($expectedBinds, $builder->getBinds());
|
||||
}
|
||||
|
||||
public function testPrefixWithSubquery()
|
||||
public function testPrefixWithSubquery(): void
|
||||
{
|
||||
$expected = <<<'NOWDOC'
|
||||
SELECT "u"."id", "u"."name", (SELECT 1 FROM "ci_users" "sub" WHERE "sub"."id" = "u"."id") "one"
|
||||
@ -69,4 +70,20 @@ final class PrefixTest extends CIUnitTestCase
|
||||
|
||||
$this->assertSame($expected, $builder->getCompiledSelect());
|
||||
}
|
||||
|
||||
public function testPrefixWithNewQuery(): void
|
||||
{
|
||||
$expectedSQL = <<<'NOWDOC'
|
||||
SELECT "users_1"."id", "name"
|
||||
FROM (SELECT "u"."id", "u"."name" FROM "ci_users" "u") "users_1"
|
||||
WHERE "users_1"."id" > 10
|
||||
NOWDOC;
|
||||
|
||||
$subquery = (new BaseBuilder('users u', $this->db))->select('u.id, u.name');
|
||||
$builder = $this->db->newQuery()->fromSubquery($subquery, 'users_1')
|
||||
->select('users_1.id, name')
|
||||
->where('users_1.id > ', 10);
|
||||
|
||||
$this->assertSame($expectedSQL, $builder->getCompiledSelect());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user