Beispiel #1
0
 /**
  * @return Doctrine\ORM\Query
  */
 public function getQuery()
 {
     $query = $this->queryBuilder->getQuery();
     if (method_exists($query, 'setHint')) {
         $query->setHint(Query::HINT_INCLUDE_META_COLUMNS, true);
     }
     return $query;
 }
 public function getItems($offset, $itemCountPerPage)
 {
     $this->_query->setFirstResult($offset);
     $this->_query->setMaxResults($itemCountPerPage);
     $a = $this->_query->getQuery()->getResult();
     $r = array();
     foreach ($a as $i) {
         $r[] = new $this->_modelName($i);
     }
     return $r;
 }
Beispiel #3
0
 public function getFriendsFriendShips($userId)
 {
     $queryBuilder = new \Doctrine\ORM\QueryBuilder($this->entityManager);
     $queryBuilder->select("ffs")->from(self::MODEL, "ffs")->join("ffs.user_source", "f")->join("f.friendships_as_target", "mfs")->join("mfs.user_source", "me")->where("me.id = :user_id")->andWhere("ffs.accepted = 1")->andWhere("mfs.accepted = 1")->groupBy("ffs.user_target")->setParameter("user_id", $userId);
     $result = $this->getResults($queryBuilder->getQuery());
     return $result;
 }
 /**
  * Returns the whole aggregated feed. You can limit the list giving any number.
  *
  * @return List<UnifiedSocialEntityInterface>
  */
 public function getFeed($limit = false)
 {
     if ($limit !== false && is_int($limit)) {
         $this->qb->setMaxResults($limit);
     }
     $this->qb->andWhere('e.approved = 1');
     return $this->qb->getQuery()->getResult();
 }
 /**
  * Retorna o itens da paginação
  *
  * @param int $iInicioPaginacao
  * @param int $iItensPorPagina
  * @return array
  */
 public function getItems($iInicioPaginacao, $iItensPorPagina)
 {
     $this->_query->setFirstResult($iInicioPaginacao);
     $this->_query->setMaxResults($iItensPorPagina);
     $aResultado = $this->_query->getQuery()->getResult();
     $aRetorno = array();
     foreach ($aResultado as $sModelo) {
         $aRetorno[] = new $this->_modelName($sModelo);
     }
     return $aRetorno;
 }
 /**
  * Returns the whole aggregated feed. You can limit the list giving any number.
  *
  * @param bool  $onlyApproved if only approved elements should be returned. default is true.
  * @param int   $limit        how many items should be fetched at maximum
  * @param array $requestIds   which requestIds should be fetched, if left empty all are fetched
  * @return array<TwitterEntityInterface> List of twitter entities
  */
 public function getFeed($onlyApproved = true, $limit = false, array $requestIds = array())
 {
     $result = array();
     foreach ($this->apiRequests as $request) {
         if (count($requestIds) > 0 && !in_array($request->getId(), $requestIds)) {
             continue;
         }
         $this->initializeQueryBuilder($request->getId());
         if ($limit !== false && is_int($limit)) {
             $this->qb->setMaxResults($limit);
         }
         if ($onlyApproved) {
             $this->qb->andWhere('e.approved = true');
         }
         $this->qb->andWhere('e.requestId = :requestId')->setParameter('requestId', $request->getId());
         $result = array_merge($result, $this->qb->getQuery()->getResult());
     }
     return $result;
 }
Beispiel #7
0
 /**
  * It is possible to use query builder with additional columns.
  * In this case, only item at index [0] is returned, because
  * it should be an entity object.
  * @return array
  */
 public function getData()
 {
     // Paginator is better if the query uses ManyToMany associations
     $usePaginator = $this->qb->getMaxResults() !== NULL || $this->qb->getFirstResult() !== NULL;
     $data = array();
     if ($usePaginator) {
         $paginator = new Paginator($this->getQuery());
         // Convert paginator to the array
         foreach ($paginator as $result) {
             // Return only entity itself
             $data[] = is_array($result) ? $result[0] : $result;
         }
     } else {
         foreach ($this->qb->getQuery()->getResult() as $result) {
             // Return only entity itself
             $data[] = is_array($result) ? $result[0] : $result;
         }
     }
     return $data;
 }
Beispiel #8
0
 public function getListLikedByUser($userId)
 {
     $queryBuilder = new \Doctrine\ORM\QueryBuilder($this->entityManager);
     $queryBuilder->select("b")->from(self::MODEL, "b")->join("b.userbooks", "ub")->join("ub.user", "u")->where("u.id = :user_id")->andWhere("(ub.rating >= 4 OR ub.is_wished = 1)")->andWhere("ub.is_deleted != 1")->orderBy("ub.last_modification_date", "DESC")->setParameter("user_id", $userId);
     // We don't cache this result as the function is only called by the book svc which does the caching
     $result = $this->getResults($queryBuilder->getQuery());
     return $result;
 }
Beispiel #9
0
 /**
  * @return array
  */
 public function getLimitedResult($limit)
 {
     return $this->qb->getQuery()->setMaxResults($limit)->getResult();
 }
Beispiel #10
0
 public function getListWishedBooks($userId, $limit, $useCache)
 {
     $cacheId = $this->getCacheId(__FUNCTION__, array($userId));
     $queryBuilder = new \Doctrine\ORM\QueryBuilder($this->entityManager);
     $queryBuilder->select("ub, u, b, r, p, c")->from(self::MODEL, "ub")->join("ub.user", "u")->join("ub.book", "b")->leftJoin("ub.reading_state", "r")->leftJoin("b.publisher", "p")->leftJoin("b.contributors", "c")->orderBy("ub.id", "DESC")->where("u.id = :id")->andWhere("ub.is_deleted = 0")->andWhere("ub.is_wished = 1")->setParameter("id", $userId);
     if ($limit != -1) {
         $queryBuilder->setMaxResults($limit);
     }
     $result = $this->getResults($queryBuilder->getQuery(), $cacheId, $useCache);
     return $result;
 }
Beispiel #11
0
 public function getListByKeyword($keyword)
 {
     $queryBuilder = new \Doctrine\ORM\QueryBuilder($this->entityManager);
     $queryBuilder->select("u")->from(self::MODEL, "u")->Where("u.email LIKE :keyword")->orWhere("u.user_name LIKE :keyword")->orWhere("u.last_name LIKE :keyword")->orWhere("u.first_name LIKE :keyword")->setParameter("keyword", "%" . $keyword . "%");
     $result = $this->getResults($queryBuilder->getQuery());
     return $result;
 }