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

2024-04-02

我目前正在开发一个使用 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"

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

/*
   * @Entity
   * @Table(name="tableOnSecondDatabase")
   */
  Class EntityFromSecond
  {

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


我不认为你可以将一个实体绑定到特定的连接,这在 Doctrine 2 架构中没有意义。

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

editAFAIK,原则 2 不支持跨数据库连接,即拥有两个不同的连接并跨它们连接。我什至无法想象,这将如何在 PHP PDO 级别上工作。 Vijay 针对基于 Doctrine 1 和 Second 的建议,这并不完全是跨数据库连接,因为 Doctrine 1 执行 2 个查询并合并结果本身,这在性能方面并不是最佳的。

另一方面,您可以做的是拥有一个连接,该连接可以访问两个数据库(即,如果它们位于同一数据库服务器上)或模式(如果您使用的是 Postgres),并定义您的实体如下:

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

//defining second entity

@Entity
@Table(secondSchema.table_name)
class SecondEntity

我相信这应该有效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Doctrine2 和 Zend 框架中的多个数据库连接 的相关文章

随机推荐