public function testConstructor_WithPageInfo_ExtractsPageInfo() { $this->request->method('getQueryParams')->willReturn(['pageSize' => 5, 'pageNumber' => 2]); $apiRequest = new ApiRequest($this->request); $this->assertEquals(5, $apiRequest->getPageSize()); $this->assertEquals(2, $apiRequest->getPageNumber()); }
/** * Split the ids query, otherwise pagination will create issues when using joins. */ public function executeIdsQuery($query, ApiRequest $apiRequest) { $repository = $this->orm->getRepositoryFromQuery($query); $idsQuery = $this->orm->getIdsQuery($repository); $this->addFilterCriteria($idsQuery, $repository, $apiRequest->getFilters()); $this->addSortCriteria($idsQuery, $repository, $apiRequest->getSort()); $this->addPageCriteria($idsQuery, $repository, $apiRequest->getPageSize(), $apiRequest->getPageNumber()); $ids = array_map(function ($item) { return $item['id']; }, $this->orm->executeQuery($idsQuery)); return $ids; }