使用与多个实体经理的关系

Mik*_*ike 23 symfony doctrine-orm

我想知道是否有可能在驻留在不同数据库中的两个实体之间创建关系.

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

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

Ocr*_*ius 40

使用不同的对象管理器(实体管理器)不允许对象图形相交.那个案子太复杂了,不是由Doctrine ORM管理的.

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

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

  • *如果您的RDBMS支持单个主机上的跨数据库操作,您可以使用单个EntityManager并引用另一个表*.很好的建议.谢谢! (8认同)
  • 发现当仅使用一个实体管理器和多个数据库时,Doctrine仅检测`default_connection`表中的模式更改.有什么想法解决这个问题吗? (3认同)
  • @DonCallisto 据我所知,没有更新的方法。 (2认同)