public function getPager(array $criteria, $page, $limit = 10, array $sort = array())
{
$query = $this->getRepository()->createQueryBuilder('b')->select('b');
$fields = $this->getEntityManager()->getClassMetadata($this->class)->getFieldNames();
foreach ($sort as $field => $direction) {
if (!in_array($field, $fields)) {
throw new \RuntimeException(sprintf("Invalid sort field '%s' in '%s' class", $field, $this->class));
}
}
if (count($sort) == 0) {
$sort = array('id' => 'ASC');
}
foreach ($sort as $field => $direction) {
$query->orderBy(sprintf('b.%s', $field), strtoupper($direction));
}
$pager = new Pager();
$pager->setMaxPerPage($limit);
$pager->setQuery(new ProxyQuery($query));
$pager->setPage($page);
$pager->init();
return $pager;
}