<?php namespace Wallabag\CommentBundle\Repository; use Doctrine\ORM\EntityRepository; /** * CommentRepository. * * This class was generated by the Doctrine ORM. Add your own custom * repository methods below. */ class CommentRepository extends EntityRepository { /** * Return a query builder to used by other getBuilderFor* method. * * @param int $userId * * @return QueryBuilder */ private function getBuilderByUser($userId) { return $this->createQueryBuilder('c') ->leftJoin('c.user', 'u') ->andWhere('u.id = :userId')->setParameter('userId', $userId) ->orderBy('c.id', 'desc') ; } /** * Retrieves all comments for a user. * * @param int $userId * * @return QueryBuilder */ public function getBuilderForAllByUser($userId) { return $this ->getBuilderByUser($userId) ; } /** * Get comment for this id. * * @param int $commentId * * @return array */ public function findCommentById($commentId) { return $this->createQueryBuilder('c') ->andWhere('c.id = :commentId')->setParameter('commentId', $commentId) ->getQuery()->getSingleResult() ; } /** * Find comments for entry id. * * @param int $entryId * @param int $userId * * @return array */ public function findCommentsByPageId($entryId, $userId) { return $this->createQueryBuilder('c') ->where('c.entry = :entryId')->setParameter('entryId', $entryId) ->andwhere('c.user = :userId')->setParameter('userId', $userId) ->getQuery()->getResult() ; } /** * Find last comment for a given entry id. Used only for tests. * * @param int $entryId * * @return array */ public function findLastCommentByPageId($entryId, $userId) { return $this->createQueryBuilder('c') ->where('c.entry = :entryId')->setParameter('entryId', $entryId) ->andwhere('c.user = :userId')->setParameter('userId', $userId) ->orderBy('c.id', 'DESC') ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } }