A CountSqlWalker and LimitSubquerySqlWalker have been implemented. By
default the Paginator will use these SQL walkers. When a query already
uses custom SQL walkers, the Paginator will fall back to the existing
TreeWalker implementations. Improvements:
* Support for more complex DQL queries using named mixed results with
GROUP BY and HAVING. For example:
SELECT g, u, COUNT(u.id) AS userCount
FROM Entity\Group g LEFT JOIN g.users u
GROUP BY g.id
HAVING userCount > 0
* Support for entities with composite primary keys in the CountSqlWalker
and LimitSubquerySqlWalker. Only the WhereInWalker still needs to be
updated for full composite primary key support. But someone smarter
than me needs to look at that and figure out how to build a WHERE IN
query that can select rows based on multiple columns.
The Pagination tool throws an exception on a DQL query like:
SELECT u FROM User u WHERE NOT (u INSTANCE OF Person)
This is because Paginate does not know about the
Doctrine\ORM\Query\AST\ConditionalFactor which implements the NOT
operator. This patch adds support for that.