mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-05 09:41:40 +09:00
Support "if" in <group> inside <groups> #2595
This commit is contained in:
parent
386f93fc6c
commit
51762315de
4 changed files with 19 additions and 2 deletions
|
|
@ -15,6 +15,7 @@
|
|||
</conditions>
|
||||
<groups if="if_groupby">
|
||||
<group column="member.member_srl" />
|
||||
<group column="member.nick_name" if="if_groupby_nick_name" />
|
||||
<having>
|
||||
<condition operation="notequal" column="member.member_srl" var="exclude_member_srl" notnull="notnull" />
|
||||
</having>
|
||||
|
|
|
|||
|
|
@ -178,7 +178,8 @@ class DBQueryParserTest extends \Codeception\Test\Unit
|
|||
$this->assertEquals('AND', $query->conditions[1]->pipe);
|
||||
|
||||
$this->assertTrue($query->groupby instanceof Rhymix\Framework\Parsers\DBQuery\GroupBy);
|
||||
$this->assertEquals('member.member_srl', $query->groupby->columns[0]);
|
||||
$this->assertEquals(['member.member_srl', null], $query->groupby->columns[0]);
|
||||
$this->assertEquals(['member.nick_name', 'if_groupby_nick_name'], $query->groupby->columns[1]);
|
||||
$this->assertEquals(1, count($query->groupby->having));
|
||||
$this->assertTrue($query->groupby->having[0] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||
$this->assertEquals('member.member_srl', $query->groupby->having[0]->column);
|
||||
|
|
@ -196,6 +197,12 @@ class DBQueryParserTest extends \Codeception\Test\Unit
|
|||
'AND `documents`.`document_srl` IN (?, ?, ?) GROUP BY `member`.`member_srl` HAVING `member`.`member_srl` != ?', $sql);
|
||||
$this->assertEquals(['12', '34', '56', '4'], $params);
|
||||
|
||||
$args['if_groupby_nick_name'] = true;
|
||||
$sql = $query->getQueryString('rx_', $args);
|
||||
$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`.`member_srl` = `member`.`member_srl` ' .
|
||||
'AND `documents`.`document_srl` IN (?, ?, ?) GROUP BY `member`.`member_srl`, `member`.`nick_name` HAVING `member`.`member_srl` != ?', $sql);
|
||||
|
||||
$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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue