Cours 16 — Supprimer un enregistrement
Introduction
Pour supprimer un enregistrement, il faut :
- rechercher l’objet ;
- demander sa suppression ;
- enregistrer la modification dans la base.
Principe général
1
2
3
4
| $patient = $patientRepository->find($id);
$entityManager->remove($patient);
$entityManager->flush();
|
Résultat :
1
| Le patient est supprimé de la base de données.
|
Rechercher l’objet
1
| $patient = $patientRepository->find($id);
|
Doctrine récupère l’objet à supprimer.
Vérifier que l’objet existe
1
2
3
| if (!$patient) {
throw $this->createNotFoundException();
}
|
Si l’objet n’existe pas, Symfony affiche une erreur 404.
Demander la suppression
1
| $entityManager->remove($patient);
|
Signifie :
1
| Doctrine prépare la suppression de l'objet.
|
Exécuter la suppression
1
| $entityManager->flush();
|
Signifie :
1
| Doctrine exécute la requête SQL de suppression.
|
Exemple complet
1
2
3
4
5
6
7
8
| $patient = $patientRepository->find($id);
if (!$patient) {
throw $this->createNotFoundException();
}
$entityManager->remove($patient);
$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
| #[Route('/patient/supprimer/{id}', name: 'patient_delete')]
public function delete(
int $id,
PatientRepository $patientRepository,
EntityManagerInterface $entityManager
): Response
{
$patient = $patientRepository->find($id);
if (!$patient) {
throw $this->createNotFoundException();
}
$entityManager->remove($patient);
$entityManager->flush();
return new Response('Patient supprimé');
}
|
Comprendre le processus
1
2
3
4
5
6
7
| find()
↓
remove()
↓
flush()
↓
Base de données
|
Conclusion
Pour supprimer un enregistrement :
1
2
| $entityManager->remove($objet);
$entityManager->flush();
|
À retenir :
- rechercher l’objet ;
- vérifier qu’il existe ;
- utiliser
remove() ; - utiliser
flush() pour appliquer la suppression.