Doctrine2 ORM 有两种处理多对多关联的技术方法:
1/ 对于 2 个实体之间的“简单”关系,并且没有附加属性:
- 在实体之间使用@ManyToMany 关联
- 在这种情况下,直接使用链接表,无需关联实体
2/ 当链接表引入额外字段或超过 2 个实体时:
- 使用关联类,即“真实”实体来映射链接表
- 在这种情况下,直接的 ManyToMany 关联被参与实体之间的OneToMany/ManyToOne关联所取代
这两种实现方式完全不同。
但是,在某些情况下,未来的业务需求可能很快需要更改简单的关联,例如添加额外的字段。 在这种情况下,我们必须用第二个实现替换现有实体中的直接多对多关联,并重构受影响的代码。
- 那么,始终使用关联实体来处理所有 ManyToMany 关联是一种好方法吗?
- 否则,选择好的实现和处理这些领域模型演变的最佳实践是什么?