Post

Symfony – Supprimer un enregistrement

Symfony – Supprimer un enregistrement

Cours 16 — Supprimer un enregistrement

Introduction

Pour supprimer un enregistrement, il faut :

  1. rechercher l’objet ;
  2. demander sa suppression ;
  3. 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.
This post is licensed under CC BY 4.0 by the author.