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 :
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();
        }
    }
J'ai 2 entités, user et reservation, sans relation entre elles.
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 :
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();
Ce code fonctionne, ma question concerne les persist et le 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 !