Sonata\OrderBundle\Entity\OrderManager::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('o')->select('o');
        $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('reference' => 'ASC');
        }
        foreach ($sort as $field => $direction) {
            $query->orderBy(sprintf('o.%s', $field), strtoupper($direction));
        }
        $parameters = array();
        if (isset($criteria['status'])) {
            $query->andWhere('o.status = :status');
            $parameters['status'] = $criteria['status'];
        }
        if (isset($criteria['customer'])) {
            $query->innerJoin('o.customer', 'c', 'WITH', 'c.id = :customer');
            $parameters['customer'] = $criteria['customer'];
        }
        $query->setParameters($parameters);
        $pager = new Pager();
        $pager->setMaxPerPage($limit);
        $pager->setQuery(new ProxyQuery($query));
        $pager->setPage($page);
        $pager->init();
        return $pager;
    }