Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Add DBAL QueryBuilder support for KnpPaginatorBundle
namespace ChubV\ToolkitBundle\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Knp\Component\Pager\Event\ItemsEvent;
use Doctrine\DBAL\Query\QueryBuilder;
class PaginationSubscriber implements EventSubscriberInterface
public function items(ItemsEvent $event)
if ($event->target instanceof QueryBuilder) {
/** @var QueryBuilder $target */
$target = $event->target;
//get the query
$sql = $target->getSQL();
//count results
$qb = clone $target;
->select('count(*) as cnt')
->from('(' . $sql . ')', 'ololoshke_trololoshke');
$event->count = $qb->execute()
//if there is results
$event->items = [];
if ($event->count) {
$q = clone $target;
$event->items = $q->execute()
public static function getSubscribedEvents()
return array(
'knp_pager.items' => array('items', 10 /*make sure to transform before any further modifications*/)
class: ChubV\ToolkitBundle\Subscriber\PaginationSubscriber
- { name: knp_paginator.subscriber }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.