symfony doctrine2 doctrine symfony-2.3

symfony - Doctrine2 orphanRemoval ManyToMany solo si no hay otros registros conectados



symfony-2.3 (1)

Mi propósito es eliminar el registro en el artista de la entidad solo si no hay otros registros de la banda sonora conectada a la entidad.

Intenté con orphanRemoval de esta manera:

Soundtrack.php

/** * @Assert/NotBlank(message = "soundtrack.artists.blank") * @ORM/ManyToMany(targetEntity="Artist", inversedBy="soundtrack", cascade={"persist", "remove"}, orphanRemoval=true) * @ORM/JoinTable(name="soundtrack_artist") * @ORM/OrderBy({"name" = "ASC"}) **/ private $artists;

Artist.php

/** * @ORM/ManyToMany(targetEntity="Soundtrack", mappedBy="artists") */ private $soundtrack;

pero cuando elimino una pista de sonido de la entidad, también borro el registro del artista de la entidad, incluso si está vinculado a la banda sonora de otros registros (creo que esto es lo que debe esperar de orphanRemoval).

¿Hay alguna forma de eliminar ese registro como "huérfano" solo cuando no hay otros registros conectados?

También intenté así:

**Soundtrack.php** /** * @Assert/NotBlank(message = "soundtrack.artists.blank") * @ORM/ManyToMany(targetEntity="Artist", inversedBy="soundtrack", cascade={"persist"}, orphanRemoval=true) * @ORM/JoinTable(name="soundtrack_artist") * @ORM/OrderBy({"name" = "ASC"}) **/ private $artists;

pero no elimina el artista de la entidad de registros ..


Opción orphanRemoval explícitamente piensa que ese objeto secundario propietario es la única instancia que hace referencia a sus hijos. Para hacer que funcione, debe separar el elemento secundario del elemento principal (referencia no establecida) para eliminar el elemento secundario. Con muchas-2-muchas asociaciones debería separar las entidades de ambos lados (propiedad e inversa)

Ver documentos

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.