Мне нелегко осмыслить руководство "Doctrine manual" объяснение каскадных операций и нужно, чтобы кто-то помог мне понять варианты в условия простого отношения ManyToOne.
В моем приложении у меня есть таблица/объект с именем Article, который имеет поле внешнего ключа, ссылающееся на поле id в таблице/объекте с именем Topic.
Когда я создаю новую статью, я выбираю тему из выпадающего меню. Это вставляет целое число в поле "topic_id" внешнего ключа в таблице "Статьи".
У меня есть ассоциация $topic, созданная в объекте Article следующим образом:
/**
* @ManyToOne(targetEntity="Topic")
* @JoinColumn(name="topic_id", referencedColumnName="id", nullable=false)
*/
private $topic;
У объекта темы нет взаимной аннотации относительно объекта Article. Темы не заботятся о том, что статьи ссылаются на них, и ничего не должно произойти с темой, когда статья, ссылающаяся на тему, удаляется.
Поскольку я не указываю каскадную операцию в объекте Article, Doctrine выдает ошибку при попытке создать новую статью: "Новый объект был найден через отношения, которые не были настроены на каскадное сохранение операций. Явно сохраняю новый объект или сконфигурировать каскадные операции с сохранением отношения."
Итак, я знаю, что мне нужно выбрать каскадную операцию для включения в объект Article, но как узнать, какую операцию выбрать в этой ситуации?
Из прочитанного руководства Doctrine, "отсоединить" звучит как правильный вариант. Но изучение других подобных вопросов здесь и здесь заставляет меня думать, что я хочу использовать вместо этого "persist".
Может ли кто-нибудь помочь мне понять, что "сохраняются", "удалять", "сливать" и "отделять" означать в терминах простого отношения ManyToOne, подобного тому, которое я описал?