Как следует применять факультативные отношения «один-к-одному» в доктрине ORM и Symfony? Предположим, что в базе данных есть несколько папок. В каждой папке может быть значок по умолчанию или какой-либо пользовательский значок, представленный в другой таблице. Как это описание должно описываться в файле схемы? Как я могу сказать, что в случае заданного отношения папки происходит или не происходит?Факультативное отношение с доктриной ORM
Я сам к догадкам, но каждый, кажется, не совсем хорошо:
1) Допустим, я определяю folder_icon
таблицы с id
колонки и folder_icon_id
столбцом в таблице folder
и связать эти столбцы с внешним ключом. Если folder_icon_id
содержит NULL, отношения не возникают. Если он содержит некоторое целочисленное значение, он указывает на соответствующий значок папки. Когда я реализую его таким образом и пытаюсь получить значок папки, используя что-то вроде $ folder-> getFolderIcon(), я получаю экземпляр класса FolderIcon с полями, установленными в null (где я бы предпочел получить что-то вроде NULL, FALSE или Doctrine_Null). Почему это так? Как проверить, не вернул ли возвращенный объект значок «реальной» папки?
2) Предположим, что я использую метод, аналогичный предыдущему, но я определяю первую строку таблицы folder_icon
как значок по умолчанию, так что каждая папка, у которой нет настраиваемого значка, связана с этой первой строкой. В этом случае нет проблем с получением некоторых фиктивных экземпляров класса FolderIcon. Но есть проблема, если значок пользовательской папки удаляется из базы данных формы, так как нет поведения onDelete «SET 1», чтобы связать любые папки с помощью удаленной иконки со значком по умолчанию.
Как решить эту проблему? Каков правильный способ определения такого отношения в файле схемы?
Отлично, это именно то, что я искал. Поэтому я должен следовать первому способу описания схемы и проверить, существует ли связь для данной папки с isset ($ folder-> FolderIcon). Благодаря! –