symfony - onetomany - Doctrine: cascade="remove" vs orphanremoval=true
onetomany cascade delete symfony (1)
¿Cuál es la diferencia entre las 2 opciones anteriores? ¿Cuándo es preferible elegir cada opción?
La diferencia básica entre ellos es:
Al utilizar la opción orphanRemoval = true, Doctrine asume que las entidades son de propiedad privada y NO serán reutilizadas por otras entidades. Si descuida esta suposición, Doctrine eliminará sus entidades, incluso si asignó la entidad huérfana a otra.
Supongamos que su User tiene una relación uno a muchos con los Comment . Si usa cascade="remove" , puede eliminar la referencia de Comment de un User y luego adjuntar ese Comment a otro User . Cuando los persista, se guardarán correctamente. Pero si está utilizando orphanRemoval=true , incluso si elimina un Comment dado de un User y luego lo adjunta a otro User , este comentario se eliminará durante la persistencia, porque la referencia se ha eliminado.