Мне трудно разобраться в объяснении каскадных операций руководства 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: «В связи, которая не была настроена для каскадных операций persist, была обнаружена новая сущность. новый объект или настроить каскадные постоянные операции над отношениями. "
Итак, я знаю, что мне нужно выбрать каскадную операцию для включения в сущность Article, но как мне узнать, какую операцию выбрать в этой ситуации?
Из прочтения руководства по Доктрине «отсоединение» звучит как правильный вариант. Но изучение подобных вопросов других людей здесь и здесь заставляет меня думать, что я хочу использовать вместо этого "persist".
Может ли кто-нибудь помочь мне понять, что означают слова "сохраняться", "удалить", "объединить" и "отделить" в терминах простых отношений ManyToOne, подобных описанным мной?