2

Doctrine2 ORM 有两种处理多对多关联的技术方法:

1/ 对于 2 个实体之间的“简单”关系,并且没有附加属性:

  • 在实体之间使用@ManyToMany 关联
  • 在这种情况下,直接使用链接表,无需关联实体

2/ 当链接表引入额外字段或超过 2 个实体时:

  • 使用关联类,即“真实”实体来映射链接表
  • 在这种情况下,直接的 ManyToMany 关联被参与实体之间的OneToMany/ManyToOne关联所取代

这两种实现方式完全不同。

但是,在某些情况下,未来的业务需求可能很快需要更改简单的关联,例如添加额外的字段。 在这种情况下,我们必须用第二个实现替换现有实体中的直接多对多关联,并重构受影响的代码。

  • 那么,始终使用关联实体来处理所有 ManyToMany 关联是一种好方法吗?
  • 否则,选择好的实现和处理这些领域模型演变的最佳实践是什么?
4

1 回答 1

1

如果您有充分的理由相信在不久的将来您将在多对多连接表上拥有额外的属性,那么出于预防目的创建实体是一个好主意。如果不是,那么最好使用正常的 ManyToMany 关系。然后,当需要更改时,您可以更新您的架构以及您的代码。如果您尝试遵循单一职责原则,那么您可以避免重构大量代码。

于 2013-08-04T19:21:55.170 回答