Skip to content

Fixed SQLServer ORDER BY problem in paginator CountOutputWalker #572

Closed
wants to merge 3 commits into from
View
1 lib/Doctrine/ORM/Tools/Pagination/CountOutputWalker.php
@@ -79,6 +79,7 @@ public function __construct($query, $parserResult, array $queryComponents)
*/
public function walkSelectStatement(SelectStatement $AST)
{
+ $AST->orderByClause = null;
$sql = parent::walkSelectStatement($AST);
// Find out the SQL alias of the identifier column of the root entity
View
13 tests/Doctrine/Tests/ORM/Tools/Pagination/CountOutputWalkerTest.php
@@ -41,5 +41,18 @@ public function testCountQuery_Having()
"SELECT COUNT(*) AS dctrn_count FROM (SELECT DISTINCT id1 FROM (SELECT count(u0_.id) AS sclr0, g1_.id AS id1, u0_.id AS id2 FROM groups g1_ LEFT JOIN user_group u2_ ON g1_.id = u2_.group_id LEFT JOIN User u0_ ON u0_.id = u2_.user_id GROUP BY g1_.id HAVING sclr0 > 0) dctrn_result) dctrn_table", $query->getSql()
);
}
+
+ public function testCountQueryOrderBySqlServer()
+ {
+ $query = $this->entityManager->createQuery(
+ 'SELECT p FROM Doctrine\Tests\ORM\Tools\Pagination\BlogPost p ORDER BY p.id');
+ $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Doctrine\ORM\Tools\Pagination\CountOutputWalker');
+ $query->setFirstResult(null)->setMaxResults(null);
+
+ $this->assertEquals(
+ "SELECT COUNT(*) AS dctrn_count FROM (SELECT DISTINCT id0 FROM (SELECT b0_.id AS id0, b0_.author_id AS author_id1, b0_.category_id AS category_id2 FROM BlogPost b0_) dctrn_result) dctrn_table",
+ $query->getSql()
+ );
+ }
}
Something went wrong with that request. Please try again.