This commit is contained in:
Kijin Sung 2023-11-21 22:13:56 +09:00
parent ad5c3c0f5c
commit 40d3ce4f46
2 changed files with 15 additions and 6 deletions

View file

@ -1,14 +1,22 @@
<query id="selectSubqueryTest1" action="select"> <query id="selectSubqueryTest1" action="select">
<tables> <tables>
<table name="documents" /> <table name="documents" />
<table query="true" alias="m"> <table query="true" alias="m" type="join">
<tables> <tables>
<table name="member" /> <table name="member">
<conditions>
<condition operation="equal" column="documents.regdate" default="m.regdate" />
</conditions>
</table>
</tables> </tables>
<columns> <columns>
<column name="member_srl" /> <column name="member_srl" />
<column name="nick_name" /> <column name="nick_name" />
<column name="regdate" />
</columns> </columns>
<conditions>
<condition operation="equal" column="documents.nick_name" var="nick_name" />
</conditions>
</table> </table>
</tables> </tables>
<columns> <columns>

View file

@ -244,18 +244,19 @@ class DBQueryParserTest extends \Codeception\Test\Unit
$this->assertTrue($query->tables['m'] instanceof Rhymix\Framework\Parsers\DBQuery\Query); $this->assertTrue($query->tables['m'] instanceof Rhymix\Framework\Parsers\DBQuery\Query);
$this->assertEquals(1, count($query->tables['m']->tables)); $this->assertEquals(1, count($query->tables['m']->tables));
$this->assertEquals('member', $query->tables['m']->tables['member']->name); $this->assertEquals('member', $query->tables['m']->tables['member']->name);
$this->assertEquals(2, count($query->tables['m']->columns)); $this->assertEquals(3, count($query->tables['m']->columns));
$this->assertEquals(1, count($query->columns)); $this->assertEquals(1, count($query->columns));
$this->assertEquals('documents.member_srl', $query->conditions[0]->column); $this->assertEquals('documents.member_srl', $query->conditions[0]->column);
$this->assertEquals('m.member_srl', $query->conditions[0]->default); $this->assertEquals('m.member_srl', $query->conditions[0]->default);
$sql = $query->getQueryString('rx_', []); $sql = $query->getQueryString('rx_', ['nick_name' => 'foobar']);
$params = $query->getQueryParams(); $params = $query->getQueryParams();
$this->assertEquals('SELECT `documents`.* FROM `rx_documents` AS `documents`, ' . $this->assertEquals('SELECT `documents`.* FROM `rx_documents` AS `documents`, ' .
'(SELECT `member_srl`, `nick_name` FROM `rx_member` AS `member`) AS `m` ' . '(SELECT `member_srl`, `nick_name`, `regdate` FROM `rx_member` AS `member` ' .
'WHERE `documents`.`nick_name` = ?) AS `m` ' .
'WHERE `documents`.`member_srl` = `m`.`member_srl`', $sql); 'WHERE `documents`.`member_srl` = `m`.`member_srl`', $sql);
$this->assertEquals([], $params); $this->assertEquals(['foobar'], $params);
} }
public function testSubquery2() public function testSubquery2()