Определение связей внешнего ключа перед УДАЛЕНИЕМ

#symfony #foreign-keys

#symfony #внешние ключи

Вопрос:

У меня много отношений в моей модели, и я заметил, что довольно часто, если я пытаюсь удалить модель (для этого я настроил различные экраны пользовательского интерфейса), она завершается неудачей из-за другой таблицы, ссылающейся на эту запись.

Могу ли я заранее узнать, используя функцию Symfony, есть ли какие-либо потенциальные нарушения внешнего ключа? Тогда я могу прервать процесс удаления и отобразить приятную ошибку или сообщение или что-то в этом роде.

Или, если кто-нибудь может придумать какие-либо альтернативные способы сделать это, я определенно открыт для идей.

Ответ №1:

В нашем проекте на факультете разработки программного обеспечения мы проверяем нарушения FK. В контроллере мы настроили закрытую функцию, которая проверяет данную сущность на наличие нарушений FK, и если эта функция будет успешной, мы можем попытаться удалить сущность.

Сама функция не делает слишком много, просто просматривает отношения сущностей и проверяет, существует ли какой-либо объект, на который ссылается. Если да, то они должны быть удалены перед удалением.

Если вы также хотите удалить объекты, на которые даны ссылки, вы также можете установить каскад для отношений:

 @ORMManyToOne(targetEntity="Entity", cascade={"remove"})