query->getInt('page', 1); $perPage = min($request->query->getInt('perPage', 100), 500); $qb = $repository->createFilteredQueryBuilder( $request->query->all() ); $adapter = new QueryAdapter($qb); $pagerfanta = new Pagerfanta($adapter); $pagerfanta->setMaxPerPage($perPage); $pagerfanta->setCurrentPage($page); $data = $pagerfanta->getCurrentPageResults(); $response = [ 'data' => $data, 'pagination' => [ 'total' => $pagerfanta->getNbResults(), 'count' => count($data), 'per_page' => $pagerfanta->getMaxPerPage(), 'current_page' => $pagerfanta->getCurrentPage(), 'total_pages' => $pagerfanta->getNbPages(), 'has_previous_page' => $pagerfanta->hasPreviousPage(), 'has_next_page' => $pagerfanta->hasNextPage(), ], ]; return $this->json($response, Response::HTTP_OK, [], [ 'groups' => ['pricelist:read'] ]); } }