Tengo dificultades para comprender las operaciones en cascada del manual de Doctrine explanation y necesito que alguien me ayude a comprender las opciones en términos de una relación simple de ManyToOne.Opciones de Doctrine Cascade para OneToMany
En mi aplicación, tengo una tabla/entidad llamada Article que tiene un campo de clave externa que hace referencia al campo 'id' en una tabla/entidad llamada Topic.
Cuando creo un nuevo artículo, selecciono el tema en un menú desplegable. Esto inserta un número entero en el campo clave externa 'topic_id' en la tabla Artículo.
que tienen el tema $ asociación creada en la entidad artículo así:
/**
* @ManyToOne(targetEntity="Topic")
* @JoinColumn(name="topic_id", referencedColumnName="id", nullable=false)
*/
private $topic;
La entidad tema no tiene ninguna anotación de vaivén con respecto a la entidad artículo. A los temas no les importa qué Artículos los referencian y nada tiene que sucederle a un Tema cuando se elimina un Artículo que hace referencia al Tema.
Como no estoy especificando la operación en cascada en la entidad Artículo, Doctrine arroja un error cuando intento crear un nuevo Artículo: "Se encontró una nueva entidad a través de una relación que no estaba configurada para continuar operaciones en cascada. persistir la nueva entidad o configurar las operaciones de persistencia en cascada en la relación ".
Así que sé que necesito elegir una operación en cascada para incluir en la entidad Artículo, pero ¿cómo sé qué operación elegir en esta situación?
Al leer el manual de Doctrine, "separar" suena como la opción correcta. Pero investigar las preguntas similares de otros here y here me hace pensar que quiero usar "persistir" en su lugar.
¿Alguien puede ayudarme a entender qué significa "persistir", "eliminar", "fusionar" y "separar" significa en términos de una relación simple de ManyToOne como la que he descrito?
+1 para la buena pregunta. Espero que alguien lo responda pronto, me gustaría obtener más información sobre la opción de cascada. Faltan libros o documentación sobre Doctrine2 en este momento. – gremo