mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-06 10:11:38 +09:00
Add 'ifvar' attribute to most query elements
XML 쿼리에서 'ifvar' 속성을 사용하여, 특정 변수가 있을 때만 유효한 테이블이나 컬럼, 인덱스 힌트 등을 지정할 수 있도록 합니다. 어떤 변수를 넣는지에 따라 <condition> 뿐 아니라 <table>, <column>, <index_hint? 등의 적용 여부도 XML 쿼리 수정 없이 자유롭게 컨트롤할 수 있게 됩니다.
This commit is contained in:
parent
1289776c97
commit
6b7486e74f
12 changed files with 88 additions and 11 deletions
|
|
@ -137,7 +137,7 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
|
|||
$this->assertTrue($query->columns[1]->is_expression);
|
||||
$this->assertFalse($query->columns[1]->is_wildcard);
|
||||
|
||||
$this->assertEquals(3, count($query->conditions));
|
||||
$this->assertEquals(4, count($query->conditions));
|
||||
$this->assertEquals('documents.member_srl', $query->conditions[0]->column);
|
||||
$this->assertEquals('member.member_srl', $query->conditions[0]->default);
|
||||
$this->assertNull($query->conditions[0]->var);
|
||||
|
|
@ -153,7 +153,10 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
|
|||
$this->assertEquals('member.member_srl', $query->groupby->having[0]->column);
|
||||
$this->assertEquals('notequal', $query->groupby->having[0]->operation);
|
||||
|
||||
$args = array('document_srl_list' => [12, 34, 56], 'exclude_member_srl' => 4);
|
||||
$args = array(
|
||||
'document_srl_list' => [12, 34, 56], 'exclude_member_srl' => 4,
|
||||
'if_table' => true, 'if_column' => true, 'if_condition1' => true, 'if_groupby' => true,
|
||||
);
|
||||
$sql = $query->getQueryString('rx_', $args);
|
||||
$params = $query->getQueryParams();
|
||||
|
||||
|
|
@ -161,6 +164,28 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
|
|||
'WHERE `documents`.`member_srl` = `member`.`member_srl` AND `documents`.`member_srl` = `member`.`member_srl` ' .
|
||||
'AND `documents`.`document_srl` IN (?, ?, ?) GROUP BY `member`.`member_srl` HAVING `member`.`member_srl` != ?', $sql);
|
||||
$this->assertEquals(['12', '34', '56', '4'], $params);
|
||||
|
||||
$args = array(
|
||||
'document_srl_list' => [12, 34, 56], 'exclude_member_srl' => 4, 'exclude_document_srl_list' => '78,90',
|
||||
'if_table' => true, 'if_column' => true, 'if_condition2' => true,
|
||||
);
|
||||
$sql = $query->getQueryString('rx_', $args);
|
||||
$params = $query->getQueryParams();
|
||||
|
||||
$this->assertEquals('SELECT `member`.`member_srl`, COUNT(*) AS `count` FROM `rx_documents` AS `documents`, `rx_member` AS `member` ' .
|
||||
'WHERE `documents`.`member_srl` = `member`.`member_srl` AND `documents`.`document_srl` IN (?, ?, ?) ' .
|
||||
'AND `documents`.`document_srl` NOT IN (?, ?)', $sql);
|
||||
$this->assertEquals(['12', '34', '56', '78', '90'], $params);
|
||||
|
||||
$args = array(
|
||||
'document_srl_list' => [12, 34, 56], 'exclude_member_srl' => 4,
|
||||
);
|
||||
$sql = $query->getQueryString('rx_', $args);
|
||||
$params = $query->getQueryParams();
|
||||
|
||||
$this->assertEquals('SELECT `member`.`member_srl` FROM `rx_documents` AS `documents` ' .
|
||||
'WHERE `documents`.`member_srl` = `member`.`member_srl` AND `documents`.`document_srl` IN (?, ?, ?)', $sql);
|
||||
$this->assertEquals(['12', '34', '56'], $params);
|
||||
}
|
||||
|
||||
public function testJoin2()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue