27

我想知道是否可以在位于不同数据库中的两个实体之间创建关系。

例如,如果我们采用此处找到的解决方案http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html并在客户数据库中与默认数据库中的帖子创建一对多关系。

这是 Symfony2 和 Doctrine 支持的东西吗?

4

1 回答 1

50

使用不同的对象管理器(实体管理器)不允许对象图相交。这种情况太复杂了,不是由 Doctrine ORM 管理的。

如果您需要这种情况,请通过保存相关对象的标识符(旧样式)而不是对它们的引用来保持对象图的断开连接,然后通过服务手动获取对象。您可以在 Doctrine2 ORM 和 Doctrine2 MongoDB ODM 之间的连接示例中找到一个很好的示例来说明这将如何工作。或者,您也可以使用@PostLoad事件侦听器,通过在示例中链接的存储库创建链接来填充实体中的数据。相同@PostPersist(应该提取相关对象的标识符),但要注意这种技术可能会变得非常混乱。

此外,如果您的 RDBMS 支持单个主机上的跨数据库操作,您可以只使用单个 EntityManager 并使用@ORM\Table(name="schemaname.tablename").

于 2012-07-15T18:35:05.473 回答