From e2bdb8684fda063d2d2cc5971386094b66cf191f Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 16:55:20 +0200 Subject: [PATCH 01/11] MembershipShiftExemption: always prefetch ShiftExemption --- src/AppBundle/Entity/MembershipShiftExemption.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AppBundle/Entity/MembershipShiftExemption.php b/src/AppBundle/Entity/MembershipShiftExemption.php index 131143ebc..5964201fe 100644 --- a/src/AppBundle/Entity/MembershipShiftExemption.php +++ b/src/AppBundle/Entity/MembershipShiftExemption.php @@ -44,7 +44,7 @@ class MembershipShiftExemption private $createdBy; /** - * @ORM\ManyToOne(targetEntity="ShiftExemption", inversedBy="membershipShiftExemptions") + * @ORM\ManyToOne(targetEntity="ShiftExemption", inversedBy="membershipShiftExemptions", fetch="EAGER") * @ORM\JoinColumn(name="shift_exemption_id", referencedColumnName="id") */ private $shiftExemption; From 227761dd8e8482da4ebc40748aa8c514683cb6d3 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 16:55:58 +0200 Subject: [PATCH 02/11] Membership autocomplete: prefetch beneficiaries --- src/AppBundle/Repository/BeneficiaryRepository.php | 14 ++++++-------- src/AppBundle/Repository/MembershipRepository.php | 12 ++++++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/AppBundle/Repository/BeneficiaryRepository.php b/src/AppBundle/Repository/BeneficiaryRepository.php index 75c19ec2a..e27f923f2 100644 --- a/src/AppBundle/Repository/BeneficiaryRepository.php +++ b/src/AppBundle/Repository/BeneficiaryRepository.php @@ -49,17 +49,15 @@ public function findFromAutoComplete($beneficiaries) /** * findAllActive * - * return all the active beneficiaries meaning with - * an active membership + * return all the active beneficiaries with an active membership */ public function findAllActive() { - - $qb = $this->createQueryBuilder('beneficiary') - ->select('beneficiary, membership') - ->join('beneficiary.user', 'user') - ->join('beneficiary.membership', 'membership') - ->where('membership.withdrawn = 0'); + $qb = $this->createQueryBuilder('b') + ->select('b, m') + ->join('b.user', 'user') + ->join('b.membership', 'm') + ->where('m.withdrawn = 0'); return $qb ->getQuery() diff --git a/src/AppBundle/Repository/MembershipRepository.php b/src/AppBundle/Repository/MembershipRepository.php index d31699b4e..a4023d634 100644 --- a/src/AppBundle/Repository/MembershipRepository.php +++ b/src/AppBundle/Repository/MembershipRepository.php @@ -25,7 +25,6 @@ public function findOneFromAutoComplete($membership) preg_match('/#(\d+)\s/s', $membership, $matches); $membershipMemberNumber = $matches[1]; - $qb = $this->createQueryBuilder('m') ->where('m.member_number = :memberNumber') ->setParameter('memberNumber', $membershipMemberNumber); @@ -35,11 +34,20 @@ public function findOneFromAutoComplete($membership) ->getOneOrNullResult(); } - public function findAllActive() + /** + * return all the active memberships + */ + public function findAllActive($prefetchBeneficiaries = true) { $qb = $this->createQueryBuilder('m') ->where('m.withdrawn = 0'); + if ($prefetchBeneficiaries) { + $qb + ->leftJoin('m.beneficiaries', 'b') + ->addSelect('b'); + } + return $qb ->getQuery() ->getResult(); From e89edf6c77f0bb823ca5b0fbf2f4070d21ea7138 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 16:58:44 +0200 Subject: [PATCH 03/11] Event: always prefetch EventKind --- src/AppBundle/Entity/Event.php | 2 +- src/AppBundle/Repository/EventRepository.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/AppBundle/Entity/Event.php b/src/AppBundle/Entity/Event.php index f59d1982d..b0c74019e 100644 --- a/src/AppBundle/Entity/Event.php +++ b/src/AppBundle/Entity/Event.php @@ -88,7 +88,7 @@ class Event private $end; /** - * @ORM\ManyToOne(targetEntity="EventKind", inversedBy="events") + * @ORM\ManyToOne(targetEntity="EventKind", inversedBy="events", fetch="EAGER") * @ORM\JoinColumn(name="event_kind_id", referencedColumnName="id", onDelete="SET NULL") */ private $kind; diff --git a/src/AppBundle/Repository/EventRepository.php b/src/AppBundle/Repository/EventRepository.php index 3e25b0af4..276dbf9f0 100644 --- a/src/AppBundle/Repository/EventRepository.php +++ b/src/AppBundle/Repository/EventRepository.php @@ -20,8 +20,6 @@ public function findAll() public function findFutures(\DateTime $max = null, EventKind $eventKind = null) { $qb = $this->createQueryBuilder('e') - ->select('e, ek') - ->leftJoin('e.kind', 'ek') ->where('e.date > :now') ->setParameter('now', new \Datetime('now')); @@ -44,7 +42,7 @@ public function findFutures(\DateTime $max = null, EventKind $eventKind = null) ->getResult(); } - public function findPast(int $limit = null) + public function findPast(int $limit = null, EventKind $eventKind = null) { $qb = $this->createQueryBuilder('e') ->where('e.date < :now') @@ -54,6 +52,12 @@ public function findPast(int $limit = null) $qb->setMaxResults($limit); } + if ($eventKind) { + $qb + ->andwhere('e.kind = :kind') + ->setParameter('kind', $eventKind); + } + $qb->orderBy('e.date', 'DESC'); return $qb From 6e85e389c105c896189b6ba666150d08e7937eb3 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 17:09:55 +0200 Subject: [PATCH 04/11] Shift: always prefetch Job --- src/AppBundle/Entity/Shift.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AppBundle/Entity/Shift.php b/src/AppBundle/Entity/Shift.php index abdcad329..06b4cc681 100644 --- a/src/AppBundle/Entity/Shift.php +++ b/src/AppBundle/Entity/Shift.php @@ -77,7 +77,7 @@ class Shift /** * One Shift has One Job. - * @ORM\ManyToOne(targetEntity="Job", inversedBy="shifts") + * @ORM\ManyToOne(targetEntity="Job", inversedBy="shifts", fetch="EAGER") * @ORM\JoinColumn(name="job_id", referencedColumnName="id", nullable=false) */ private $job; From fa96cb7b122a10b3278eb8134254109294628d10 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 17:10:07 +0200 Subject: [PATCH 05/11] ShiftFreeLog: always prefetch Shift --- src/AppBundle/Controller/ShiftFreeLogController.php | 1 - src/AppBundle/Entity/ShiftFreeLog.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AppBundle/Controller/ShiftFreeLogController.php b/src/AppBundle/Controller/ShiftFreeLogController.php index 691cb07e8..09128ebf1 100644 --- a/src/AppBundle/Controller/ShiftFreeLogController.php +++ b/src/AppBundle/Controller/ShiftFreeLogController.php @@ -106,7 +106,6 @@ public function indexAction(Request $request) $order = 'DESC'; $qb = $em->getRepository('AppBundle:ShiftFreeLog')->createQueryBuilder('sfl') - ->leftJoin("sfl.shift", "s") ->orderBy('sfl.' . $sort, $order); if ($filter["created_at"]) { diff --git a/src/AppBundle/Entity/ShiftFreeLog.php b/src/AppBundle/Entity/ShiftFreeLog.php index 732957bff..8a4ca8751 100644 --- a/src/AppBundle/Entity/ShiftFreeLog.php +++ b/src/AppBundle/Entity/ShiftFreeLog.php @@ -37,7 +37,7 @@ class ShiftFreeLog private $createdBy; /** - * @ORM\ManyToOne(targetEntity="Shift", cascade={"remove"}) + * @ORM\ManyToOne(targetEntity="Shift", inversedBy="shiftFreeLogs", cascade={"remove"}, fetch="EAGER") * @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE") */ private $shift; From a756fbeee46cc8c4e85ecb54bad819302b4f4c98 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 17:37:07 +0200 Subject: [PATCH 06/11] Event: fix queries --- src/AppBundle/Repository/EventRepository.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/AppBundle/Repository/EventRepository.php b/src/AppBundle/Repository/EventRepository.php index 276dbf9f0..c72c879b0 100644 --- a/src/AppBundle/Repository/EventRepository.php +++ b/src/AppBundle/Repository/EventRepository.php @@ -20,6 +20,8 @@ public function findAll() public function findFutures(\DateTime $max = null, EventKind $eventKind = null) { $qb = $this->createQueryBuilder('e') + ->leftJoin('e.kind', 'ek') + ->addSelect('ek') ->where('e.date > :now') ->setParameter('now', new \Datetime('now')); @@ -45,6 +47,8 @@ public function findFutures(\DateTime $max = null, EventKind $eventKind = null) public function findPast(int $limit = null, EventKind $eventKind = null) { $qb = $this->createQueryBuilder('e') + ->leftJoin('e.kind', 'ek') + ->addSelect('ek') ->where('e.date < :now') ->setParameter('now', new \Datetime('now')); From 2891fae64ae61816914f2192ee2ca062920da170 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Sun, 7 May 2023 17:47:58 +0200 Subject: [PATCH 07/11] Position: prefetch Job --- src/AppBundle/Entity/Period.php | 2 +- src/AppBundle/Entity/PeriodPosition.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/AppBundle/Entity/Period.php b/src/AppBundle/Entity/Period.php index 1fc47afdd..3d871a36e 100644 --- a/src/AppBundle/Entity/Period.php +++ b/src/AppBundle/Entity/Period.php @@ -46,7 +46,7 @@ class Period /** * One Period has One Job. - * @ORM\ManyToOne(targetEntity="Job", inversedBy="periods") + * @ORM\ManyToOne(targetEntity="Job", inversedBy="periods", fetch="EAGER") * @ORM\JoinColumn(name="job_id", referencedColumnName="id", nullable=false) */ private $job; diff --git a/src/AppBundle/Entity/PeriodPosition.php b/src/AppBundle/Entity/PeriodPosition.php index e1a435a10..cfb204f14 100644 --- a/src/AppBundle/Entity/PeriodPosition.php +++ b/src/AppBundle/Entity/PeriodPosition.php @@ -24,13 +24,13 @@ class PeriodPosition /** * One Period has One Formation. - * @ORM\ManyToOne(targetEntity="Formation") + * @ORM\ManyToOne(targetEntity="Formation", fetch="EAGER") * @ORM\JoinColumn(name="formation_id", referencedColumnName="id", onDelete="CASCADE") */ private $formation; /** - * @ORM\ManyToOne(targetEntity="Period", inversedBy="positions") + * @ORM\ManyToOne(targetEntity="Period", inversedBy="positions", fetch="EAGER") * @ORM\JoinColumn(name="period_id", referencedColumnName="id", onDelete="CASCADE") */ private $period; From 45b7467ae7818088fac597092f3805918c6e8805 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Mon, 8 May 2023 23:07:27 +0200 Subject: [PATCH 08/11] User search: prefetch Formation, Commission, MembershipShiftExemptions --- src/AppBundle/Controller/AdminController.php | 2 +- .../Service/SearchUserFormHelper.php | 37 +++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/AppBundle/Controller/AdminController.php b/src/AppBundle/Controller/AdminController.php index ac8442f06..354b90464 100644 --- a/src/AppBundle/Controller/AdminController.php +++ b/src/AppBundle/Controller/AdminController.php @@ -85,7 +85,7 @@ public function usersAction(Request $request, SearchUserFormHelper $formHelper) $action = $form->get('action')->getData(); - $qb = $formHelper->initSearchQuery($this->getDoctrine()->getManager()); + $qb = $formHelper->initSearchQuery($this->getDoctrine()->getManager(), 'search'); if ($form->isSubmitted() && $form->isValid()) { $formHelper->processSearchFormData($form, $qb); diff --git a/src/AppBundle/Service/SearchUserFormHelper.php b/src/AppBundle/Service/SearchUserFormHelper.php index d2eaf3cc1..2b6afdeb5 100644 --- a/src/AppBundle/Service/SearchUserFormHelper.php +++ b/src/AppBundle/Service/SearchUserFormHelper.php @@ -320,12 +320,16 @@ public function createMemberShiftTimeLogFilterForm($formBuilder, $defaults = [], * @param EntityManager $doctrineManager * @return QueryBuilder */ - public function initSearchQuery($doctrineManager) { + public function initSearchQuery($doctrineManager, $type = null) { $qb = $doctrineManager->getRepository("AppBundle:Membership")->createQueryBuilder('o'); $qb = $qb->leftJoin("o.beneficiaries", "b") ->leftJoin("b.user", "u") ->leftJoin("o.registrations", "r")->addSelect("r") - ->leftJoin("o.membershipShiftExemptions", "e"); + ->leftJoin("o.membershipShiftExemptions", "mse")->addSelect("mse"); + if ($type == 'search') { + $qb->leftJoin("b.commissions", "c")->addSelect("b, c"); + $qb->leftJoin("b.formations", "f")->addSelect("b, f"); + } // do not include admin user $qb = $qb->andWhere('o.member_number > 0'); return $qb; @@ -426,10 +430,10 @@ public function processSearchFormData($form,&$qb) { } if ($form->get('exempted')->getData() > 0) { if ($form->get('exempted')->getData() == 2) { - $qb = $qb->andWhere('e.start <= :date AND e.end >= :date') + $qb = $qb->andWhere('mse.start <= :date AND mse.end >= :date') ->setParameter('date', $now); } else if ($form->get('exempted')->getData() == 1) { - $qb = $qb->andWhere('e.start IS NULL OR e.start > :date OR e.end < :date') + $qb = $qb->andWhere('mse.start IS NULL OR mse.start > :date OR mse.end < :date') ->setParameter('date', $now); } } @@ -559,9 +563,8 @@ public function processSearchFormData($form,&$qb) { $ids_groups = array(); foreach ($formations as $formation) { $tmp_qb = clone $qb; - $tmp_qb = $tmp_qb->leftjoin("b.formations", "ro") - ->andWhere('ro.id IN (:rid)') - ->setParameter('rid', $formation ); + $tmp_qb = $tmp_qb->andWhere('f.id IN (:fid)') + ->setParameter('fid', $formation); $ids_groups[] = $tmp_qb->select('DISTINCT o.id')->getQuery()->getArrayResult(); } $ids = $ids_groups[0]; @@ -576,26 +579,23 @@ public function processSearchFormData($form,&$qb) { $qb = $qb->andWhere('o.id IN (:all_formations)') ->setParameter('all_formations', $ids); } else { - $qb = $qb->leftjoin("b.formations", "ro") - ->andWhere('ro.id IN (:rids)') - ->setParameter('rids', $form->get('formations')->getData()); + $qb = $qb->andWhere('f.id IN (:fids)') + ->setParameter('fids', $form->get('formations')->getData()); $join_formations = true; } } $join_commissions = false; if ($form->get('commissions')->getData() && count($form->get('commissions')->getData())) { - $qb = $qb->leftjoin("b.commissions", "c") - ->andWhere('c.id IN (:cids)') - ->setParameter('cids', $form->get('commissions')->getData() ); + $qb->andWhere('c.id IN (:cids)') + ->setParameter('cids', $form->get('commissions')->getData()); $join_commissions = true; } if ($form->get('not_formations')->getData() && count($form->get('not_formations')->getData())) { $nrqb = clone $qb; if (!$join_formations) { - $nrqb = $nrqb->leftjoin("b.formations", "ro") - ->andWhere('ro.id IN (:rids)'); + $nrqb = $nrqb->andWhere('f.id IN (:fids)'); } - $nrqb->setParameter('rids', $form->get('not_formations')->getData() ); + $nrqb->setParameter('fids', $form->get('not_formations')->getData() ); $subQuery = $nrqb->select('DISTINCT o.id')->getQuery()->getArrayResult(); if (count($subQuery)) { @@ -607,10 +607,9 @@ public function processSearchFormData($form,&$qb) { if ($form->get('not_commissions')->getData() && count($form->get('not_commissions')->getData())) { $ncqb = clone $qb; if (!$join_commissions) { - $ncqb = $ncqb->leftjoin("b.commissions", "c") - ->andWhere('c.id IN (:cids)'); + $ncqb->andWhere('c.id IN (:cids)'); } - $ncqb->setParameter('cids', $form->get('not_commissions')->getData() ); + $ncqb->setParameter('cids', $form->get('not_commissions')->getData()); $subQuery = $ncqb->select('DISTINCT o.id')->getQuery()->getArrayResult(); if (count($subQuery)) { From 1a348ce01f67b579f64c2c676f171950707289e3 Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Mon, 8 May 2023 23:38:24 +0200 Subject: [PATCH 09/11] Registration: prefetch HelloassoPayments --- src/AppBundle/Entity/HelloassoPayment.php | 2 +- src/AppBundle/Entity/Registration.php | 2 +- src/AppBundle/Service/SearchUserFormHelper.php | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/AppBundle/Entity/HelloassoPayment.php b/src/AppBundle/Entity/HelloassoPayment.php index 96ab3e669..d03b6071c 100644 --- a/src/AppBundle/Entity/HelloassoPayment.php +++ b/src/AppBundle/Entity/HelloassoPayment.php @@ -86,7 +86,7 @@ class HelloassoPayment private $status; /** - * @ORM\OneToOne(targetEntity="Registration", inversedBy="helloassoPayment") + * @ORM\OneToOne(targetEntity="Registration", inversedBy="helloassoPayment", fetch="EAGER") * @ORM\JoinColumn(name="registration_id", referencedColumnName="id", onDelete="SET NULL") */ private $registration; diff --git a/src/AppBundle/Entity/Registration.php b/src/AppBundle/Entity/Registration.php index e835e1d3e..e7ee1baca 100644 --- a/src/AppBundle/Entity/Registration.php +++ b/src/AppBundle/Entity/Registration.php @@ -74,7 +74,7 @@ class Registration private $registrar; /** - * @ORM\OneToOne(targetEntity="HelloassoPayment", mappedBy="registration", cascade={"persist"}) + * @ORM\OneToOne(targetEntity="HelloassoPayment", mappedBy="registration", cascade={"persist"}, fetch="EAGER") */ private $helloassoPayment; diff --git a/src/AppBundle/Service/SearchUserFormHelper.php b/src/AppBundle/Service/SearchUserFormHelper.php index 2b6afdeb5..6ee855f2b 100644 --- a/src/AppBundle/Service/SearchUserFormHelper.php +++ b/src/AppBundle/Service/SearchUserFormHelper.php @@ -325,6 +325,7 @@ public function initSearchQuery($doctrineManager, $type = null) { $qb = $qb->leftJoin("o.beneficiaries", "b") ->leftJoin("b.user", "u") ->leftJoin("o.registrations", "r")->addSelect("r") + ->leftJoin("r.helloassoPayment", "rhp")->addSelect("rhp") ->leftJoin("o.membershipShiftExemptions", "mse")->addSelect("mse"); if ($type == 'search') { $qb->leftJoin("b.commissions", "c")->addSelect("b, c"); From 35771f206686f428605ac605fe26c1b0c8c92e4e Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Tue, 9 May 2023 00:01:23 +0200 Subject: [PATCH 10/11] Extra optimizations in ambassador search --- src/AppBundle/Controller/AmbassadorController.php | 4 +++- src/AppBundle/Service/SearchUserFormHelper.php | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/AppBundle/Controller/AmbassadorController.php b/src/AppBundle/Controller/AmbassadorController.php index 58af5d6b6..a2e8a7ec6 100644 --- a/src/AppBundle/Controller/AmbassadorController.php +++ b/src/AppBundle/Controller/AmbassadorController.php @@ -194,7 +194,9 @@ public function memberShiftTimeLogAction(Request $request, SearchUserFormHelper $qb = $formHelper->initSearchQuery($this->getDoctrine()->getManager()); $qb = $qb->leftJoin("o.registrations", "lr", Join::WITH,'lr.date > r.date')->addSelect("lr") ->where('lr.id IS NULL') // registration is the last one registered - ->addSelect("(SELECT SUM(ti.time) FROM AppBundle\Entity\TimeLog ti WHERE ti.membership = o.id) AS HIDDEN time"); + ->addSelect("(SELECT SUM(ti.time) FROM AppBundle\Entity\TimeLog ti WHERE ti.membership = o.id) AS HIDDEN time") + ->leftJoin("o.timeLogs", "tl")->addSelect("tl") + ->leftJoin("o.notes", "n")->addSelect("n"); if ($form->isSubmitted() && $form->isValid()) { $qb = $formHelper->processSearchFormAmbassadorData($form, $qb); diff --git a/src/AppBundle/Service/SearchUserFormHelper.php b/src/AppBundle/Service/SearchUserFormHelper.php index 6ee855f2b..e7cae011b 100644 --- a/src/AppBundle/Service/SearchUserFormHelper.php +++ b/src/AppBundle/Service/SearchUserFormHelper.php @@ -322,14 +322,14 @@ public function createMemberShiftTimeLogFilterForm($formBuilder, $defaults = [], */ public function initSearchQuery($doctrineManager, $type = null) { $qb = $doctrineManager->getRepository("AppBundle:Membership")->createQueryBuilder('o'); - $qb = $qb->leftJoin("o.beneficiaries", "b") - ->leftJoin("b.user", "u") + $qb = $qb->leftJoin("o.beneficiaries", "b")->addSelect("b") + ->leftJoin("b.user", "u")->addSelect("u") ->leftJoin("o.registrations", "r")->addSelect("r") ->leftJoin("r.helloassoPayment", "rhp")->addSelect("rhp") ->leftJoin("o.membershipShiftExemptions", "mse")->addSelect("mse"); if ($type == 'search') { - $qb->leftJoin("b.commissions", "c")->addSelect("b, c"); - $qb->leftJoin("b.formations", "f")->addSelect("b, f"); + $qb->leftJoin("b.commissions", "c")->addSelect("c"); + $qb->leftJoin("b.formations", "f")->addSelect("f"); } // do not include admin user $qb = $qb->andWhere('o.member_number > 0'); From 85cadc64b7fd9bacfe3259f1bfd7264243d7206a Mon Sep 17 00:00:00 2001 From: Raphael Odini Date: Tue, 9 May 2023 11:08:22 +0200 Subject: [PATCH 11/11] AnonymousBeneficiary: prefetch registrar --- src/AppBundle/Entity/AnonymousBeneficiary.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AppBundle/Entity/AnonymousBeneficiary.php b/src/AppBundle/Entity/AnonymousBeneficiary.php index cdec2f857..f1bbefbf8 100644 --- a/src/AppBundle/Entity/AnonymousBeneficiary.php +++ b/src/AppBundle/Entity/AnonymousBeneficiary.php @@ -39,7 +39,7 @@ class AnonymousBeneficiary private $email; /** - * @ORM\OneToOne(targetEntity="Beneficiary") + * @ORM\OneToOne(targetEntity="Beneficiary", fetch="EAGER") * @ORM\JoinColumn(name="join_to", referencedColumnName="id", onDelete="SET NULL") * @AppAssert\BeneficiaryCanHost */ @@ -67,7 +67,7 @@ class AnonymousBeneficiary private $mode; /** - * @ORM\ManyToOne(targetEntity="User") + * @ORM\ManyToOne(targetEntity="User", fetch="EAGER") * @ORM\JoinColumn(name="registrar_id", referencedColumnName="id", onDelete="SET NULL") */ private $registrar;