我想知道是否可以在位于不同数据库中的两个实体之间创建关系。
例如,如果我们采用此处找到的解决方案http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html并在客户数据库中与默认数据库中的帖子创建一对多关系。
这是 Symfony2 和 Doctrine 支持的东西吗?
我想知道是否可以在位于不同数据库中的两个实体之间创建关系。
例如,如果我们采用此处找到的解决方案http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html并在客户数据库中与默认数据库中的帖子创建一对多关系。
这是 Symfony2 和 Doctrine 支持的东西吗?
使用不同的对象管理器(实体管理器)不允许对象图相交。这种情况太复杂了,不是由 Doctrine ORM 管理的。
如果您需要这种情况,请通过保存相关对象的标识符(旧样式)而不是对它们的引用来保持对象图的断开连接,然后通过服务手动获取对象。您可以在 Doctrine2 ORM 和 Doctrine2 MongoDB ODM 之间的连接示例中找到一个很好的示例来说明这将如何工作。或者,您也可以使用@PostLoad
事件侦听器,通过在示例中链接的存储库创建链接来填充实体中的数据。相同@PostPersist
(应该提取相关对象的标识符),但要注意这种技术可能会变得非常混乱。
此外,如果您的 RDBMS 支持单个主机上的跨数据库操作,您可以只使用单个 EntityManager 并使用@ORM\Table(name="schemaname.tablename")
.