*/ class NotificationRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Notification::class); } /** * @return Notification[] */ public function findRecentForUser(User $user, int $limit = 20): array { return $this->createQueryBuilder('n') ->andWhere('n.user = :user') ->setParameter('user', $user) ->orderBy('n.createdAt', 'DESC') ->setMaxResults($limit) ->getQuery() ->getResult(); } public function countUnreadForUser(User $user): int { return $this->count(['user' => $user, 'read' => false]); } public function markAllReadForUser(User $user): void { $this->createQueryBuilder('n') ->update() ->set('n.read', ':true') ->where('n.user = :user') ->andWhere('n.read = :false') ->setParameter('true', true) ->setParameter('false', false) ->setParameter('user', $user) ->getQuery() ->execute(); } }