Doctrine2和Zend框架中的多个数据库连接

pi.*_*pi. 0 php zend-framework doctrine-orm

我目前正在使用ZF 1.11.3构建的应用程序 - Doctrine2是使用的ORM组件.我需要使用多个数据库.在application.ini文件中,我已按如下方式设置数据库连接:

resources.doctrine.dbal.connections.default.parameters.dbname   = "db_name_one"
resources.doctrine.dbal.connections.secondary.parameters.dbname   = "db_name_two"
Run Code Online (Sandbox Code Playgroud)

如何将基于第二个数据库连接的Doctrine2实体类与该连接相关联:例如,如果我有来自第二个连接的实体类,则:

/*
   * @Entity
   * @Table(name="tableOnSecondDatabase")
   */
  Class EntityFromSecond
  {
Run Code Online (Sandbox Code Playgroud)

Doctrine2/ZF如何知道哪些实体类映射到数据库?谢谢你的帮助.

Tom*_*šek 6

我不瘦,你可以将实体绑定到特定的连接,在Doctrine 2架构中没有意义.

另一方面,你可以做的是拥有两个EntityManagers,每个都有不同的连接选项.您必须在业务逻辑中决定哪个实体由哪个连接管理器处理.

编辑 Doctrine 2不支持跨数据库连接,即具有两个不同的连接并连接它们,AFAIK.我甚至无法想象,这将如何在PHP PDO级别上运行.Vijay为一个基于Doctrine 1和第二个的建议,这不完全是跨数据库连接,因为Doctrine 1执行2个查询并合并结果本身,这在性能方面不是最佳的.

另一方面,你可以做的是有一个连接,可以访问两个数据库(即,如果它们在同一个数据库服务器上),或者模式,如果你在说Postgres,并定义你的实体本身:

//defining first entity
@Entity
@Table(firstSchema.table_name)
class MyEntity

//defining second entity

@Entity
@Table(secondSchema.table_name)
class SecondEntity
Run Code Online (Sandbox Code Playgroud)

我相信这应该有用