* * @method Feedback|null find($id, $lockMode = null, $lockVersion = null) * @method Feedback|null findOneBy(array $criteria, array $orderBy = null) * @method Feedback[] findAll() * @method Feedback[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class FeedbackRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Feedback::class); } public function getNew(int $limit = 5): array { $qb = $this->createQueryBuilder('feedback'); return $qb ->select('feedback', 'teamer') ->innerJoin('feedback.teamer', 'teamer') ->where($qb->expr()->eq('feedback.status', ':status')) ->setParameter('status', Feedback::STATUS_NEW) ->orderBy('feedback.createdAt', 'DESC') ->setMaxResults($limit) ->getQuery() ->getResult() ; } public function getCountByStatus(string $status): int { $qb = $this->createQueryBuilder('feedback'); return $qb ->select($qb->expr()->count('feedback')) ->where($qb->expr()->eq('feedback.status', ':status')) ->setParameter('status', $status) ->getQuery() ->getSingleScalarResult() ; } public function getRecentForTeamer(Teamer $teamer, int $limit = 5): array { $qb = $this->createQueryBuilder('feedback'); return $qb ->where($qb->expr()->andX( $qb->expr()->eq('feedback.teamer', ':teamer'), $qb->expr()->eq('feedback.status', ':status') )) ->setParameter('teamer', $teamer) ->setParameter('status', Feedback::STATUS_PUBLISHED) ->orderBy('feedback.createdAt', 'DESC') ->setMaxResults($limit) ->getQuery() ->getResult() ; } }