Symfony – Modifier un enregistrement
Symfony – Modifier un enregistrement
Cours 15 — Modifier un enregistrement
Introduction
Pour modifier un enregistrement, il faut :
- rechercher l’objet ;
- modifier ses propriétés ;
- enregistrer les changements.
Principe général
1
2
3
4
5
$patient = $patientRepository->find($id);
$patient->setNom('Martin');
$entityManager->flush();
Résultat :
1
Le nom du patient est modifié dans la base de données.
Rechercher l’objet
1
$patient = $patientRepository->find($id);
Doctrine récupère l’objet depuis la base.
Modifier une propriété
1
$patient->setNom('Martin');
L’objet est modifié en mémoire.
Enregistrer les modifications
1
$entityManager->flush();
Doctrine met à jour la base de données.
Exemple complet
1
2
3
4
5
6
7
8
9
$patient = $patientRepository->find($id);
if (!$patient) {
throw $this->createNotFoundException();
}
$patient->setNom('Martin');
$entityManager->flush();
Utiliser dans un contrôleur
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#[Route('/patient/modifier/{id}', name: 'patient_edit')]
public function edit(
int $id,
PatientRepository $patientRepository,
EntityManagerInterface $entityManager
): Response
{
$patient = $patientRepository->find($id);
if (!$patient) {
throw $this->createNotFoundException();
}
$patient->setNom('Martin');
$entityManager->flush();
return new Response('Patient modifié');
}
Pourquoi pas persist() ?
L’objet existe déjà dans la base.
Doctrine le surveille automatiquement.
Il suffit donc d’utiliser :
1
$entityManager->flush();
Comprendre le processus
1
2
3
4
5
6
7
find()
↓
Modification
↓
flush()
↓
Base de données
Conclusion
Pour modifier un enregistrement :
1
2
3
4
5
$objet = $repository->find($id);
$objet->setPropriete(...);
$entityManager->flush();
À retenir :
- rechercher l’objet ;
- modifier ses propriétés ;
- utiliser
flush(); persist()n’est généralement pas nécessaire.
This post is licensed under CC BY 4.0 by the author.