diff --git a/src/SQLParser/Node/NodeFactory.php b/src/SQLParser/Node/NodeFactory.php index 2ec707b..8384326 100644 --- a/src/SQLParser/Node/NodeFactory.php +++ b/src/SQLParser/Node/NodeFactory.php @@ -42,7 +42,7 @@ public static function toObject(array $desc) // If the constant has an alias, it is declared in the columns section. // If this is the case, let's wrap it in an "expression" - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expression = new Expression(); $expression->setBaseExpression($desc['base_expr']); $expression->setSubTree($const); @@ -108,7 +108,7 @@ public static function toObject(array $desc) $instance->setDatabase($baseName); } - if (!empty($desc['alias'])) { + if (!empty($desc['alias']['name'])) { $instance->setAlias($desc['alias']['name']); } @@ -225,7 +225,7 @@ public static function toObject(array $desc) $expr->setJoinType($desc['join_type']); } - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expr->setAlias($desc['alias']['name']); } @@ -285,7 +285,7 @@ public static function toObject(array $desc) $expr->setSubTree(self::buildFromSubtree($desc['sub_tree'])); } - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expr->setAlias($desc['alias']['name']); } if (isset($desc['direction'])) { diff --git a/tests/Mouf/Database/MagicQueryTest.php b/tests/Mouf/Database/MagicQueryTest.php index 852ef4e..f3aa8a7 100644 --- a/tests/Mouf/Database/MagicQueryTest.php +++ b/tests/Mouf/Database/MagicQueryTest.php @@ -146,7 +146,7 @@ public function testStandardSelect() $sql = "SELECT Substring_index(ee.`data`, ':', -1) as foo FROM users"; $this->assertEquals("SELECT Substring_index(ee.data, ':', -1) AS foo FROM users", self::simplifySql($magicQuery->build($sql))); - + $sql = 'SELECT * FROM users GROUP BY id, login'; $this->assertEquals('SELECT * FROM users GROUP BY id, login', self::simplifySql($magicQuery->build($sql))); @@ -202,6 +202,9 @@ public function testStandardSelect() $sql = 'SELECT (id + 2) AS foo FROM bar'; $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); + + $sql = 'SELECT COUNT(*) FROM (SELECT DISTINCT states.country_id, states.code FROM states)'; + $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); } /** @@ -380,9 +383,9 @@ public function testMatchAgainst() ORDER BY MATCH(column) AGAINST(:searchTerm IN BOOLEAN MODE) DESC "; $expectedSql = "SELECT MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) AS rang FROM table WHERE MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) ORDER BY MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) DESC"; - + $params["searchTerm"] = "searchString"; - + $this->assertEquals($expectedSql, self::simplifySql($magicQuery->build($sql, $params))); }