mercredi 25 juin 2014

Supprimer une entité liée avec OneToMany

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 :
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:

Publier un commentaire