Cours 14 — Ajouter un enregistrement
Introduction
Pour enregistrer un objet dans la base de données, Doctrine utilise l’EntityManager.
Deux méthodes sont essentielles :
Principe général
1
2
| $entityManager->persist($patient);
$entityManager->flush();
|
Résultat :
1
| Le patient est enregistré dans la base de données.
|
Créer un objet
1
2
3
4
| $patient = new Patient();
$patient->setNom('Durand');
$patient->setPrenom('Paul');
|
À ce stade, l’objet existe uniquement en mémoire.
Préparer l’enregistrement
1
| $entityManager->persist($patient);
|
Signifie :
1
| Doctrine prépare l'enregistrement de l'objet.
|
Enregistrer dans la base
1
| $entityManager->flush();
|
Signifie :
1
| Doctrine exécute les requêtes SQL nécessaires.
|
Exemple complet
1
2
3
4
5
6
7
| $patient = new Patient();
$patient->setNom('Durand');
$patient->setPrenom('Paul');
$entityManager->persist($patient);
$entityManager->flush();
|
Utiliser dans un contrôleur
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #[Route('/patient/ajouter', name: 'patient_add')]
public function add(
EntityManagerInterface $entityManager
): Response
{
$patient = new Patient();
$patient->setNom('Durand');
$patient->setPrenom('Paul');
$entityManager->persist($patient);
$entityManager->flush();
return new Response('Patient ajouté');
}
|
Comprendre le processus
1
2
3
4
5
6
7
| Objet Patient
↓
persist()
↓
flush()
↓
Base de données
|
Conclusion
Pour ajouter un enregistrement :
1
2
| $entityManager->persist($objet);
$entityManager->flush();
|
À retenir :
persist() prépare l’enregistrement ;flush() exécute l’enregistrement ;- les deux méthodes sont généralement utilisées ensemble.