应该如何在 Doctrine ORM 和 Symfony 中实现兼性一对一关系?假设数据库中有一些文件夹。每个文件夹都可以有一个默认图标或在另一个表中表示的一些自定义图标。在模式文件中应该如何描述这种关系?如果给定的文件夹关系发生或不发生,我怎么知道?
我自己不得不猜测,但每个似乎都不太好:
1)假设我用表中的列和列定义folder_icon
表,并将这些列与外键链接。如果包含 NULL,则不会发生关系。如果它包含一些整数值,则它指向相应的文件夹图标。当我以这种方式实现它并尝试使用 $folder->getFolderIcon() 之类的东西来获取文件夹图标时,我得到了一个 FolderIcon 类的实例,其中字段设置为 null(我宁愿在这里得到类似 NULL、FALSE 或 Doctrine_Null 的东西)。为什么会这样?我应该如何检查返回的对象是否不是“真实”文件夹图标?id
folder_icon_id
folder
folder_icon_id
2) 假设我使用与之前类似的方法,但我将folder_icon
表格的第一行定义为默认图标,以便每个没有选择任何自定义图标的文件夹都与第一行相关。在这种情况下,获取 FolderIcon 类的一些虚拟实例没有问题。但是,如果从数据库中删除自定义文件夹图标,则会出现问题,因为没有 onDelete 行为“SET 1”将使用已删除图标的任何文件夹与默认图标相关联。
这个问题应该如何解决?在模式文件中定义这种关系的正确方法是什么?