Depuis Doctrine ^2.5 (peut-être également les versions précédentes) :
si on appelle PersistentCollection::clear()
ou PersistentCollection::removeElement()
,
et que la liaison a orphanRemoval
: les éléments à supprimer seront enregistrés dans l’UnitOfWork
comme étant à supprimer en base de données.
Jusque-là, tout va bien : c’est le comportement attendu.
Mais si on veut re-ajouter un élément indiqué comme à supprimer (pour annuler sa suppression par exemple) alors PersistentCollection
n’annule pas la demande de suppression.
Résultat : l’élément supprimé puis re-ajouté est finalement supprimé en base alors qu’on voulait le conserver.