2010-07-04 2 views
0

Как следует применять факультативные отношения «один-к-одному» в доктрине 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», чтобы связать любые папки с помощью удаленной иконки со значком по умолчанию.

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

ответ

1

Проблема с волшебными методами GetVariable

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

+0

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

Смежные вопросы