diff --git a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php index 830c182e33..8e35a234d7 100644 --- a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php @@ -62,7 +62,7 @@ class NewslettersResponseBuilder { $data['totalSent'] = $this->newslettersStatsRepository->getTotalSentCount($newsletter); } if ($relation === self::RELATION_CHILDREN_COUNT) { - $data['childrenCount'] = count($newsletter->getChildren()); + $data['childrenCount'] = $this->newslettersStatsRepository->getChildrenCount($newsletter); } if ($relation === self::RELATION_SCHEDULED) { $data['totalScheduled'] = (int)SendingQueue::findTaskByNewsletterId($newsletter->getId()) diff --git a/lib/Newsletter/Statistics/NewsletterStatisticsRepository.php b/lib/Newsletter/Statistics/NewsletterStatisticsRepository.php index 35d27a5903..35ae315517 100644 --- a/lib/Newsletter/Statistics/NewsletterStatisticsRepository.php +++ b/lib/Newsletter/Statistics/NewsletterStatisticsRepository.php @@ -111,6 +111,25 @@ class NewsletterStatisticsRepository extends Repository { } } + /** + * @param NewsletterEntity $newsletter + * @return int + */ + public function getChildrenCount(NewsletterEntity $newsletter) { + try { + return (int)$this->entityManager + ->createQueryBuilder() + ->select('COUNT(n.id) as cnt') + ->from(NewsletterEntity::class, 'n') + ->where('n.parent = :newsletter') + ->setParameter('newsletter', $newsletter) + ->getQuery() + ->getSingleScalarResult(); + } catch (UnexpectedResultException $e) { + return 0; + } + } + private function getStatisticsCount(NewsletterEntity $newsletter, $statisticsEntityName) { try { $qb = $this->entityManager