字段集合与实体参考


14

字段收集有何优势?您可以通过指向带有父实体引用的父对象的新内容类型来执行相同的操作。

也许有人可以分解一些情况,每个情况都会更好。

对于“任务”->“文件”来说,字段收集会更好还是带有实体引用的新内容类型?

假设每个文件都需要更多有关该文件的其他数据,这听起来像是带有实体引用的新类型的计划,但是您可以将字段集合嵌入到字段集合中。

我很喜欢Drupal有很多做相同事情的方式,但是我对这两种解决方案的不同之处并没有太多了解。

也许有人可以帮忙解释一下?

Answers:


15

这是我面对新项目时遇到的一个问题,即“字段集合vs实体引用+自定义实体”,或者如果结构简单,则是“字段集合vs带有几个db列/ Multifield的自定义字段” 。这是根据我的经验得出意见

多字段是一个很棒的概念,它是字段集合的“轻量级”版本,它不是创建具有关系的实体结构,而是涵盖了简单的用例,而无需创建实体。但是,它存在许多问题,例如不完整的功能集成,不是真正的多语言等(因此,如果您打算使用此功能,那么贡献可能会非常受欢迎)。

如果您要做的站点可以在各处进行一些调整,则Field Collection是一个很好的解决方案,它为站点构建者提供了一个强大的工具来创建复杂的结构,而无需担心内部结构。基本上,它将创建一个通过ID与“主机”实体相关的实体,从而允许向其及其所有内容添加字段。缺点在于需要了解Field集合的内部知识,您需要执行复杂的操作,例如管理带有Entity Reference的Field集合或迁移数据。由于它是一种通用工具,因此要超越一步会相当复杂。

您可以使用的另一种选择是将ECK与Entity Reference一起使用,但是到目前为止,我的经历一直很麻烦,我发现在没有帮助者的情况下通过代码创建实体类型更加容易。

这取决于您的需求,什么才是最适合您的项目的问题,如果您有时间和开发人员通过“实体引用”创建与数据模型相关的实体类型,则可以更好地控制发生的事情您的数据结构,但是您也是对此的“负责人”。

在使用上述所有解决方案测试了一段时间之后,在我的团队中,我们总是选择实体类型+ ER,但是我可以看到,对于小型项目,没有数据迁移或复杂的i18n设置,Field Collection只是最快的方法走。


不错的概述。我只想评论一下,字段集合确实支持通过迁移模块进行迁移。
lefterav 2015年

1
另一个方面与版本控制/修订有关。内容类型(节点)具有跟踪修订版本的现成解决方案,对附加字段集合的更改会反映到父节点。相反,实体具有其自身的修订版本,与所引用的实体无关。
lefterav 2015年

@lefterav确实确实如此,我的意思是,对于某些用例而言,迁移字段集合可能是一项非常艰巨的任务,必须加以考虑。
pcambra 2015年

3

这实际上取决于您在字段中输入的数据以及您要对它们进行的用途。

如果要使用Field Collection,请确保可以使用范围从常规视图到翻译,solr索引等的任何内容。

如果要重复使用添加到字段集合中的信息,最好使用内容类型或自定义实体。示例:一门学校课程有5个主题。主题包含3个字段:标题,小时和级别。如果要在几门学校课程中重用主题,请使用内容类型/自定义实体并使用实体引用。


0

它们的性能应该大致相同,但是字段集合使用Entity API,并且不需要创建自定义内容类型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.