Symfony – Cascade persist et remove
Symfony – Cascade persist et remove
Cours 19 — Cascade persist et remove
Introduction
Les options cascade permettent à Doctrine d’effectuer automatiquement certaines opérations sur les entités liées.
Les plus utilisées sont :
1
2
persist
remove
Cascade persist
Sans cascade :
1
2
3
4
5
$patient->addSejour($sejour);
$entityManager->persist($patient);
$entityManager->persist($sejour);
$entityManager->flush();
Avec cascade persist
1
2
3
4
5
6
#[ORM\OneToMany(
targetEntity: Sejour::class,
mappedBy: 'patient',
cascade: ['persist']
)]
private Collection $sejours;
Puis :
1
2
3
4
$patient->addSejour($sejour);
$entityManager->persist($patient);
$entityManager->flush();
Doctrine enregistre automatiquement le séjour.
Cascade remove
Sans cascade :
1
2
3
$entityManager->remove($sejour);
$entityManager->remove($patient);
$entityManager->flush();
Avec cascade remove
1
2
3
4
5
6
#[ORM\OneToMany(
targetEntity: Sejour::class,
mappedBy: 'patient',
cascade: ['remove']
)]
private Collection $sejours;
Puis :
1
2
$entityManager->remove($patient);
$entityManager->flush();
Doctrine supprime automatiquement les séjours liés.
Utiliser plusieurs cascades
1
2
3
4
5
6
#[ORM\OneToMany(
targetEntity: Sejour::class,
mappedBy: 'patient',
cascade: ['persist', 'remove']
)]
private Collection $sejours;
Comprendre le fonctionnement
1
2
3
Patient
↓
Séjours
Avec :
1
cascade persist
l’enregistrement du patient entraîne l’enregistrement des séjours.
Avec :
1
cascade remove
la suppression du patient entraîne la suppression des séjours.
Attention
Une cascade remove peut supprimer un grand nombre d’enregistrements.
Il faut l’utiliser avec prudence.
Conclusion
Les cascades automatisent certaines opérations Doctrine.
À retenir :
persist: enregistrement automatique ;remove: suppression automatique ;- plusieurs cascades peuvent être combinées ;
- attention aux suppressions en cascade.
This post is licensed under CC BY 4.0 by the author.