diff --git a/lib/Segments/SegmentSubscribersRepository.php b/lib/Segments/SegmentSubscribersRepository.php index ac422bd44a..3bd28c077d 100644 --- a/lib/Segments/SegmentSubscribersRepository.php +++ b/lib/Segments/SegmentSubscribersRepository.php @@ -57,8 +57,13 @@ class SegmentSubscribersRepository { } public function getSubscribersWithoutSegmentCount(): int { + $queryBuilder = $this->getSubscribersWithoutSegmentCountQuery(); + return (int)$queryBuilder->getQuery()->getSingleScalarResult(); + } + + public function getSubscribersWithoutSegmentCountQuery(): \MailPoetVendor\Doctrine\ORM\QueryBuilder { $queryBuilder = $this->entityManager->createQueryBuilder(); - return (int)$queryBuilder + return $queryBuilder ->select('COUNT(DISTINCT s) AS subscribersCount') ->from(SubscriberEntity::class, 's') ->leftJoin('s.subscriberSegments', 'ssg') @@ -69,8 +74,7 @@ class SegmentSubscribersRepository { ->andWhere('s.deletedAt IS NULL') ->andWhere('(ssg.status != :statusSubscribed OR ssg.id IS NULL OR sg.deletedAt IS NOT NULL)') ->andWhere('sg2.id IS NULL') - ->setParameter('statusSubscribed', SubscriberEntity::STATUS_SUBSCRIBED) - ->getQuery()->getSingleScalarResult(); + ->setParameter('statusSubscribed', SubscriberEntity::STATUS_SUBSCRIBED); } private function loadSubscriberIdsInSegment(int $segmentId, array $candidateIds = null): array { diff --git a/lib/Subscribers/SubscriberListingRepository.php b/lib/Subscribers/SubscriberListingRepository.php index 0607968103..257d3fd4c2 100644 --- a/lib/Subscribers/SubscriberListingRepository.php +++ b/lib/Subscribers/SubscriberListingRepository.php @@ -233,12 +233,14 @@ class SubscriberListingRepository extends ListingRepository { $queryBuilder = clone $this->queryBuilder; $this->applyFromClause($queryBuilder); + $subscribersWithoutSegmentQuery = $this->segmentSubscribersRepository->getSubscribersWithoutSegmentCountQuery(); if ($group) { $this->applyGroup($queryBuilder, $group); + $this->applyGroup($subscribersWithoutSegmentQuery, $group); } - $subscribersWithoutSegment = $this->segmentSubscribersRepository->getSubscribersWithoutSegmentCount(); + $subscribersWithoutSegment = $subscribersWithoutSegmentQuery->getQuery()->getSingleScalarResult(); $subscribersWithoutSegmentLabel = sprintf( WPFunctions::get()->__('Subscribers without a list (%s)', 'mailpoet'), number_format((float)$subscribersWithoutSegment)