【问题标题】:Using Relationships with Multiple Entity Managers使用与多个实体管理器的关系
【发布时间】:2012-07-13 02:54:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果您的 RDBMS 支持单个主机上的跨数据库操作,您可以只使用单个 EntityManager 并引用另一个表。很好的建议。谢谢!
    • 发现当仅使用一个实体管理器和多个数据库时,Doctrine 仅检测default_connection 表中的架构更改。有什么想法可以解决这个问题吗?
    • @noisebleed 来自文档:在这里阅读更多:symfony.com/doc/current/cookbook/doctrine/…
    • @DonCallisto 据我所知,没有更新的方法。
    • 是的,“表”注释有一个“模式”属性,因为 ORM 的一些次要版本
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2013-06-17
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多