Факультативная связь с доктриной ОРМ - PullRequest
0 голосов
/ 04 июля 2010

Как должно быть реализовано факультативное взаимно-однозначное отношение в Doctrine ORM и Symfony? Предположим, что в базе данных есть несколько папок. Каждая папка может иметь значок по умолчанию или некоторый пользовательский значок, представленный в другой таблице. Как это отношение должно быть описано в файле схемы? Как я могу сказать, что в случае данной папки папок происходит или не происходит?

Я сам должен догадаться, но каждый кажется не совсем удачным:

1) Допустим, я определяю таблицу folder_icon со столбцом id и столбцом folder_icon_id в таблице folder и связываю эти столбцы с помощью внешнего ключа. Если folder_icon_id содержит NULL, связь не возникает. Если он содержит некоторое целочисленное значение, он указывает на значок соответствующей папки. Когда я реализую это таким образом и пытаюсь получить значок папки, используя что-то вроде $ folder-> getFolderIcon (), я получаю экземпляр класса FolderIcon с полями, равными нулю (где я предпочел бы получить что-то вроде NULL, FALSE или Doctrine_Null ). Почему это так? Как я должен проверить, не является ли возвращенный объект «настоящим» значком папки?

2) Давайте предположим, что я использую метод, аналогичный предыдущему, но я определяю первую строку таблицы folder_icon как значок по умолчанию, так что каждая папка, в которой не выбран какой-либо пользовательский значок, связана с этой первой строкой. В этом случае нет проблем с получением некоторых фиктивных экземпляров класса FolderIcon. Но есть проблема, если пользовательский значок папки удаляется из базы данных, так как отсутствует поведение onDelete «SET 1» для связи любых папок с использованием удаленного значка со значком по умолчанию.

Как решить эту проблему? Как правильно определить этот тип отношений в файле схемы?

1 Ответ

1 голос
/ 04 июля 2010

Проблема с магическими методами getVariable

Используйте $ folder-> folder_icon и для проверки существования этой связи используйте isset ().Прочитайте документы на веб-сайте доктрины о проверке существования отношений, в настоящее время я нахожусь в мобильном состоянии, поэтому не могу с ними связаться.

...