J'ai du mal à comprendre les opérations en cascade du manuel Doctrine explanation et j'ai besoin de quelqu'un pour m'aider à comprendre les options en termes d'une simple relation ManyToOne.Doctrine Cascade Options pour OneToMany
Dans mon application, j'ai une table/entité nommée Article qui a un champ de clé étrangère référençant le champ 'id' dans une table/entité nommée Sujet. Lorsque je crée un nouvel article, je sélectionne le sujet dans un menu déroulant.
Cela insère un entier dans le champ de clé étrangère 'topic_id' dans la table Article.
J'ai l'association sujet de $ mis en place dans l'entité de l'article comme celui-ci:
/**
* @ManyToOne(targetEntity="Topic")
* @JoinColumn(name="topic_id", referencedColumnName="id", nullable=false)
*/
private $topic;
L'entité sujet n'a pas d'annotation alternative concernant l'entité de l'article. Les sujets se fichent de ce que les Articles les référencent et rien ne doit arriver à un Sujet lorsqu'un article référençant le Sujet est supprimé. Comme je ne spécifie pas l'opération en cascade dans l'entité Article, Doctrine génère une erreur lorsque j'essaie de créer un nouvel article: "Une nouvelle entité a été trouvée via une relation qui n'était pas configurée pour mettre en cascade les opérations de persistance. persiste la nouvelle entité ou configure les opérations de persistance en cascade sur la relation. " Donc, je sais que je dois choisir une opération en cascade à inclure dans l'entité article, mais comment puis-je savoir quelle opération choisir dans cette situation? A la lecture du manuel de Doctrine, "detach" sonne comme la bonne option. Mais la recherche des questions similaires des autres here et here me fait penser que je veux utiliser "persist" à la place. Est-ce que quelqu'un peut m'aider à comprendre ce que «persister», «supprimer», «fusionner» et «détacher» signifient en termes d'une simple relation ManyToOne comme celle que j'ai décrite?
+1 pour la bonne question. J'espère que quelqu'un y répondra bientôt, j'aimerais en savoir plus sur l'option cascade. Il y a un manque de livres ou de documentation sur Doctrine2 pour le moment. – gremo