2011-08-18 105 views

回答

2

什么你想是不是“技术上”的支持作为主义设计特征。

所以,如果你想做到这一点,你会与传统的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://[email protected]/doctrine_db1', 'db1'); 
Doctrine_Manager::connection('mysql://[email protected]/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博客上详细讨论。所以你可以检查一下。

+0

正确的链接上面提到的学说博客条目是: http://www.doctrine-project.org/blog/cross-database-joins.html 我试图编辑后纠正链接,但它没有达到编辑所需的最小“6”字符。 – s1d

相关问题