Doctrine Cascade Options для OneToMany

мне трудно понять объяснение каскадных операций в руководстве Doctrine, и мне нужен кто-то, чтобы помочь мне понять варианты в терминах простой связи ManyToOne.

В моем приложении у меня есть таблица / объект с именем Article, у которого есть поле внешнего ключа, ссылающееся на поле «id» в таблице / объекте с именем Topic.

Когда я создаю новую статью, я выбираю тему из раскрывающегося меню. Это вставляет целое число в поле внешнего ключа topic_id в таблице Article.

У меня есть ассоциация $ topic, настроенная в сущности Article следующим образом:

/**
 * @ManyToOne(targetEntity="Topic")
 * @JoinColumn(name="topic_id", referencedColumnName="id", nullable=false)
 */
private $topic;

У сущности Topic нет обратной аннотации относительно сущности Article. Темам все равно, какие статьи ссылаются на них, и ничего не должно происходить с темой, когда статья, которая ссылается на эту тему, удаляется.

Поскольку я не указываю каскадную операцию в сущности Article, Doctrine выдает ошибку, когда я пытаюсь создать новую статью: «Новая сущность была обнаружена через связь, которая не была настроена для каскадных операций сохранения. Явно сохраняю новую сущность или настройте каскадные операции сохранения связи »

Итак, я знаю, что мне нужно выбрать каскадную операцию для включения в сущность Article, но как мне узнать, какую операцию выбрать в этой ситуации?

From при чтении руководства Doctrine "отсоединение" звучит как правильный вариант. Но изучение похожих вопросов здесь и здесь заставляет меня думать, что я хочу использовать вместо этого «упорство».

Может ли кто-нибудь помочь мне понять, что означают «сохранить», «удалить», «объединить» и «отсоединить» в терминах простой связи ManyToOne, подобной той, которую я описал?

39
задан Community 23 May 2017 в 11:54
поделиться