public function getPager(array $criteria, $page, $limit = 10, array $sort = array())
{
$query = $this->getRepository()->createQueryBuilder('c')->select('c');
$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('lastname' => 'ASC');
}
foreach ($sort as $field => $direction) {
$query->orderBy(sprintf('c.%s', $field), strtoupper($direction));
}
$parameters = array();
if (isset($criteria['is_fake'])) {
$query->andWhere('c.isFake = :isFake');
$parameters['isFake'] = $criteria['is_fake'];
}
$query->setParameters($parameters);
$pager = new Pager();
$pager->setMaxPerPage($limit);
$pager->setQuery(new ProxyQuery($query));
$pager->setPage($page);
$pager->init();
return $pager;
}