Answers:
这是我面对新项目时遇到的一个问题,即“字段集合vs实体引用+自定义实体”,或者如果结构简单,则是“字段集合vs带有几个db列/ Multifield的自定义字段” 。这是根据我的经验得出的意见。
多字段是一个很棒的概念,它是字段集合的“轻量级”版本,它不是创建具有关系的实体结构,而是涵盖了简单的用例,而无需创建实体。但是,它存在许多问题,例如不完整的功能集成,不是真正的多语言等(因此,如果您打算使用此功能,那么贡献可能会非常受欢迎)。
如果您要做的站点可以在各处进行一些调整,则Field Collection是一个很好的解决方案,它为站点构建者提供了一个强大的工具来创建复杂的结构,而无需担心内部结构。基本上,它将创建一个通过ID与“主机”实体相关的实体,从而允许向其及其所有内容添加字段。缺点在于需要了解Field集合的内部知识,您需要执行复杂的操作,例如管理带有Entity Reference的Field集合或迁移数据。由于它是一种通用工具,因此要超越一步会相当复杂。
您可以使用的另一种选择是将ECK与Entity Reference一起使用,但是到目前为止,我的经历一直很麻烦,我发现在没有帮助者的情况下通过代码创建实体类型更加容易。
这取决于您的需求,什么才是最适合您的项目的问题,如果您有时间和开发人员通过“实体引用”创建与数据模型相关的实体类型,则可以更好地控制发生的事情您的数据结构,但是您也是对此的“负责人”。
在使用上述所有解决方案测试了一段时间之后,在我的团队中,我们总是选择实体类型+ ER,但是我可以看到,对于小型项目,没有数据迁移或复杂的i18n设置,Field Collection只是最快的方法走。
这实际上取决于您在字段中输入的数据以及您要对它们进行的用途。
如果要使用Field Collection,请确保可以使用范围从常规视图到翻译,solr索引等的任何内容。
如果要重复使用添加到字段集合中的信息,最好使用内容类型或自定义实体。示例:一门学校课程有5个主题。主题包含3个字段:标题,小时和级别。如果要在几门学校课程中重用主题,请使用内容类型/自定义实体并使用实体引用。