public function findByCriteria(Criteria $criteria) { $query_builder = $this->getEntityRepository()->createQueryBuilder('e')->select('e'); foreach ($criteria->getFieldFilters() as $index => $field_filter) { $this->addFieldFilterToQuery($query_builder, $index, $field_filter); } foreach ($criteria->getFieldOrders() as $field_order) { $this->addFieldOrderToQuery($query_builder, $field_order); } $paginator = new Paginator($query_builder->getQuery(), false); $total_entities = $paginator->count(); $pages_count = ceil($total_entities / $criteria->getRowsPerPage()); return new CriteriaResult($this->getPageResult($paginator, $criteria), $total_entities, $criteria->getPage(), $criteria->getRowsPerPage(), $pages_count); }