将Doctrine 2 Entity与不同的数据库一起使用

时间:2012-08-31 17:44:22

标签: symfony doctrine-orm

在我的Symfony2 browsergame中,我有一个使用Doctrine 2 ORM的用户实体。游戏有两个实例,经典和速度,它们主要是相互独立的,并且都使用它自己的数据库(相同的结构)。唯一的问题是用户能够连接他们的帐户,因此应显示所连接帐户的一些基本用户信息。为此我有一个classic_id和speed_id作为连接到另一个用户实体的属性。但这将是一个跨数据库连接,据我所知,这在Doctrine 2中是不可能的。我还发现有多个实体经理可以拥有自己的连接,但我认为它们只能应用于完整的包,对吗?

所以在这里我需要解决这个问题的一些方法,最简单的方法是什么?

1 个答案:

答案 0 :(得分:2)

实际上有可能进行跨数据库连接,但它比一个功能更具技巧性,我不建议使用它。

要将实体与不同实体管理器之间的一个捆绑包分开,您可以使用指向托管实体的“dir”属性。例如:

doctrine:
    orm:
        default_entity_manager:   default
        entity_managers:
            default:
                connection:       default
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder1
            anotherone:
                connection:       anotherconnection
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder2

“前缀”选项也很差,但我还没弄清楚它是什么(你可以自己试验:))

问候!