我应该创建一个引用字段还是第三个内容类型来表示Drupal 8中的多对多关系?



我有一个学生表和一个具有多对多关系的课程表(一个学生可以选修许多门课程,一门课程可以由许多学生选修(。

如果我将上述数据模型实现为数据库,我将创建第三个表来表示多对多关系。

但是我想在Drupal 8中实现上述数据模型。我认为在Drupal 8中有两种方法可以实现上述数据模型:

  • 我可以在两种内容类型之一中创建引用字段 (学生或课程(指向其他内容类型。
  • 我可以创建具有两个引用字段的第三个内容类型 这指向学生和课程内容类型。

我说这两种方式是有效的吗?如果我是对的,我应该选择哪一种?

我认为你是对的,我会建议两种方式。

只要他们的连接没有任何额外的参数(例如订阅日期等(,我就会在学生的内容类型中选择实体引用。

这两种方法都是有效的,并且还有一个选项可以在每种内容类型上具有相应的引用字段。

最好的选择归结为保持编辑的能力。

根据@c1u31355,如果有额外的"连接"元数据,那么第三种内容类型是要走的路(或者可能是段落(。

如果是 A <> B 的直接连接,并且您只想将引用放在一个位置,那么问问自己在哪里添加该数据最方便?创建课程然后链接到 30 名学生更容易,还是希望在创建课程时向学生添加课程?创建速度更快,但更难维护。

无论哪种方式,按照我在其他问题之一中的建议使用IEF都会有所帮助。

作为最后一个想法,拥有第三种内容类型可能会导致各种问题,除非您很好地控制字段,例如将其限制为只有一个学生拥有一堆课程,反之亦然,在这种情况下,只需在内容类型上放置一个参考字段,将字段限制为一个值,维护就会更容易。

最新更新