public function testGetGroupedFieldFilters() { $search = new Search(); $f1 = (new FieldFilter())->setFieldId(1)->setField('email')->setType(FieldFilter::EQUAL_TYPE)->setQuery('*****@*****.**'); $search->addFieldFilter($f1); $f2 = (new FieldFilter())->setFieldId(2)->setField('email')->setType(FieldFilter::LEFT_LIKE_TYPE)->setQuery('rafael')->setOr('1:0'); $search->addFieldFilter($f2); $f3 = (new FieldFilter())->setFieldId(3)->setField('email')->setType(FieldFilter::RIGHT_LIKE_TYPE)->setAnd('2:0'); $search->addFieldFilter($f3); $groupings = $search->getGroupedFieldFilters(); // Desired Structure [[$f1, [$f2, $f3]]] $this->assertEquals($f1, $groupings[0][0]); $this->assertEquals($f2, $groupings[0][1][0]); $this->assertEquals($f3, $groupings[0][1][1]); }
public function paginateQuery(Query $query, Search $search) { $results = $query->getResult(); $limit = $search->getListAll() ? count($results) ? count($results) : 1 : $search->getMaxPerPage(); $adapter = new DoctrineORMAdapter($query); $paginator = new Pagerfanta($adapter); $paginator->setMaxPerPage($limit); $paginator->setCurrentPage($search->getPage()); $paginator->getCurrentPageResults(); // Just to cache the consult $paginator->getNbResults(); // Just to cache the results return $paginator; }