php - 在 Doctrine 和 PostgreSQL 中连接不同服务器上的不同数据库

标签 php postgresql join doctrine

有没有办法做 dblink 在 Doctrine 中做的事情?

我需要连接两个服务器上两个数据库的两个表,不想使用 RawSql,而是使用模型。

提前致谢

最佳答案

你想要的在 Doctrine 中没有“技术上”支持作为设计特性。

因此,如果您想像使用传统 PostgreSQL 那样执行此操作:

SELECT table1.field1, table1.field2, table2.field2, 
    FROM table1 INNER JOIN 
        dblink('dbname=db2 port=5432 host=domainname2 
                user=someuser password=somepwd',
                'SELECT field1, field2,
                FROM other_table')
            AS table2(field1 int, field2 char(25))
        ON table1.field3 = table2.field1;

您可以将 config.php 文件中默认的单个连接替换为两个连接。

<?php

Doctrine_Manager::connection('mysql://root@server1/doctrine_db1', 'db1');
Doctrine_Manager::connection('mysql://root@server2/doctrine_db2', 'db2');

然后你会用这样的东西修改你的模式:

---
Table1:
    tableName: db1.table1
    connection: db1
    columns:
        filed1: integer
        field2: string(255)
        field3: integer
    relations:
        Table2:
        foreignType: one
        onDelete: CASCADE

Table2:
    tableName: db2.table2
    connection: db2
    columns:
        field1: integer
        field2: string(25)

然后您将像往常一样在添加数据后构建数据库。然后只需进行常规建模,确保像使用任何常规查询一样使用所需字段指定表。

Doctrine Cross Database Joins在 Doctrine 博客上有详细讨论。所以你可以检查一下。

关于php - 在 Doctrine 和 PostgreSQL 中连接不同服务器上的不同数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104937/

相关文章:

javascript - 如何自动滚动到文本文件窗口的底部?

php - 从mysql php中的输入框搜索值

postgresql - Postgres 13.3 中重载函数的奇怪行为

java - 连接两张表HQL查询

mysql - 成语中多列别名的示例

sql - 如果没有ON关键字,您是否可以拥有INNER JOIN?

php - 如何让 PHP 以编程方式输出所有错误信息?

php - 将元素移动到数组中的第一个位置

postgresql - Postgres 上个月的最后日期

ruby-on-rails - Rails Activerecord/Postgres 时间格式