如何在第一个表没有意识到的情况下在条令2中添加OneToMany关系


How to add a OneToMany relationship in Doctrine 2 without the first table being aware of it?

我想为我的应用程序构建一个可扩展的模型,第三方开发人员可以在不修改我的模型本身的情况下动态地向我的模型添加字段。我认为这可以通过"X有Y"来实现,其中实体Y中没有指定字段X。因此,第三方开发者可以简单地将他们的实体放在文件夹中,让Y发现它。让我举一个更具体的例子:

User
- Id
- Name

比方说,我想添加一个用户有很多帖子的帖子集合。如果不在用户模型中添加Posts字段,我怎么能做到这一点呢。我一直在读关于单向OneToMany等的文章,但不确定这是否会使我的模型易于扩展?你们会怎么做到这一点?

解析目标实体侦听器允许您在运行时重新定义关联。它基本上允许您映射如下内容:

@ORM'ManyToOne(targetEntity="My'Namespace'UserInterface")

正如您所看到的,将接口映射为目标实体没有多大意义。当您告诉每个My'Namespace'UserInterface都必须替换为Other'Namespace'User引用时,它会变得非常有用。

这将允许其他开发人员替换关联对象的实现,只实现其接口,然后在某个位置设置配置键,以便仅在需要时覆盖映射。

即使没有接口,它也能工作,但我强烈建议使用合同定义的清晰的API。