getEntityManager() ->createQueryBuilder() ->select("f") ->from(\models\summit\SummitEventFeedback::class, "f") ->join('f.event', 'e', Join::WITH, " e.id = :event_id") ->join('f.owner', 'o') ->setParameter('event_id', $event->getId()); if(!is_null($filter)){ $filter->apply2Query($query, array ( 'owner_id' => 'o.id', )); } if(!is_null($order)) { $order->apply2Query($query, array ( 'created_date' => 'f.created', 'owner_id' => 'o.id', 'rate' => 'f.rate', 'id' => 'f.id', )); } else { //default order $query = $query->orderBy('f.created' , Criteria::DESC); } $query= $query ->setFirstResult($paging_info->getOffset()) ->setMaxResults($paging_info->getPerPage()); $paginator = new Paginator($query, $fetchJoinCollection = true); $total = $paginator->count(); $data = array(); foreach($paginator as $entity) array_push($data, $entity); return new PagingResponse ( $total, $paging_info->getPerPage(), $paging_info->getCurrentPage(), $paging_info->getLastPage($total), $data ); } }