Bonjour à tous,
Dans mon projet en Symfony 5.4, je vois que pour mes entités, des fonctions add et remove ont été générées automatiquement dans les repository.
Exemple pour mon entité user :
J'ai 2 entités, user et reservation, sans relation entre elles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public function add(User $entity, bool $flush = false): void { $this->getEntityManager()->persist($entity); if ($flush) { $this->getEntityManager()->flush(); } } public function remove(User $entity, bool $flush = false): void { $this->getEntityManager()->remove($entity); if ($flush) { $this->getEntityManager()->flush(); } }
Quand un user fait une réservation, j'écris le mail du user dans l'entité réservation.
J'ai le code suivant dans un controller, pour gérer les users qui changent de mail, et ainsi impacter les réservations :
Ce code fonctionne, ma question concerne les persist et le flush.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //... actions sur entité user $entitymanager->persist($user); // si le mail a changé, modifier le mail des reservations $ancien_mail = $email_user; $nouveau_mail = $user->getEmail(); if ($ancien_mail != $nouveau_mail) { $tab_reservation = $reservationRepository->SelectReservationMail($ancien_mail); if (count($tab_reservation) > 0) { foreach ($tab_reservation as $element_reservation) { $id_reservation = $element_reservation->getId(); $entite_reservation = $reservationRepository->SelectReservation($id_reservation); $entite_reservation->setEmail($nouveau_mail); $entitymanager->persist($entite_reservation); } } } $entitymanager->flush();
Dans mes repository, j'ai la fonction add. Si je modifie mon controller pour l'utiliser, est ce qu'il faut que je flush à chaque fois mon user et mes réservations dans ma boucle ?
Ou comment, selon les bonnes pratiques, en passant par les repository, je peux faire les persist et qu'un flush final ?
Merci d'avance pour votre aide !
Partager