Lorsque vous avez 2 entitées Foo et Bar, liées via OneToMany, et que vous supprimez un élément Bar, flush() ne supprimera pas l'enregistrement en base de données.
Pour qu'il soit supprimé, une solution consiste à ajouter orphanRemoval=true sur la relation OneToMany, et de supprimer la liaison côté PHP entre Foo et Bar.
Exemple pour la liaison OneToMany :
Et le code pour supprimer un élément Bar dans Foo :
Pour qu'il soit supprimé, une solution consiste à ajouter orphanRemoval=true sur la relation OneToMany, et de supprimer la liaison côté PHP entre Foo et Bar.
Exemple pour la liaison OneToMany :
class Foo {
/**
* @ORM\OneToMany(targetEntity="Bar", mappedBy="parent", cascade={"persist"}, orphanRemoval=true)
*/
private $bars;
Et le code pour supprimer un élément Bar dans Foo :
class Foo {
public function removeBar(Bar $bar) {
$this->bars->removeElement($bar);
$bar->setParent(null);
}
}
Aucun commentaire:
Enregistrer un commentaire