Sonata\ProductBundle\Entity\ProductManager::getPager PHP Method

getPager() public method

public getPager ( array $criteria, $page, $limit = 10, array $sort = [] )
$criteria array
$sort array
    public function getPager(array $criteria, $page, $limit = 10, array $sort = array())
    {
        $query = $this->getRepository()->createQueryBuilder('p')->select('p');
        $fields = $this->getEntityManager()->getClassMetadata($this->class)->getFieldNames();
        foreach ($sort as $field => $direction) {
            if (!in_array($field, $fields)) {
                unset($sort[$field]);
            }
        }
        if (count($sort) == 0) {
            $sort = array('name' => 'ASC');
        }
        foreach ($sort as $field => $direction) {
            $query->orderBy(sprintf('p.%s', $field), strtoupper($direction));
        }
        $parameters = array();
        if (isset($criteria['enabled'])) {
            $query->andWhere('p.enabled = :enabled');
            $parameters['enabled'] = $criteria['enabled'];
        }
        $query->setParameters($parameters);
        $pager = new Pager();
        $pager->setMaxPerPage($limit);
        $pager->setQuery(new ProxyQuery($query));
        $pager->setPage($page);
        $pager->init();
        return $pager;
    }