getEntityManager()->createQueryBuilder() ->select("m") ->from(\models\main\ChatTeamPushNotificationMessage::class, "m") ->join('m.team', 't') ->where('m.is_sent = 1') ->andWhere('t.id = :team_id') ->setParameter('team_id', $team_id); if(!is_null($filter)){ $filter->apply2Query($query, array ( 'sent_date' => 'm.sent_date:datetime_epoch', 'owner_id' => new DoctrineJoinFilterMapping ( 'm.owner', 'mb', "mb.id :operator :value" ), )); } if (!is_null($order)) { $order->apply2Query($query, array ( 'sent_date' => 'm.sent_date', 'id' => 'm.id', )); } else { //default order $query = $query->addOrderBy("m.sent_date",'ASC'); $query = $query->addOrderBy("m.id", 'ASC'); } $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 ); } /** * @param int $team_id * @param PagingInfo $paging_info * @return PagingResponse */ function getAllNotSentByTeamPaginated ( $team_id, PagingInfo $paging_info ) { $query = $this->getEntityManager()->createQueryBuilder() ->select("m") ->from(\models\main\ChatTeamPushNotificationMessage::class, "m") ->join('m.team', 't') ->where('m.is_sent = 0') ->andWhere('t.id = :team_id') ->setParameter('team_id', $team_id); $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 ); } /** * @return string */ protected function getBaseEntity() { return ChatTeamPushNotificationMessage::class; } }