То, что вы хотите, «технически» не поддерживается как конструктивная особенность в 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 подробно обсуждаются в блоге Doctrine. Так что вы можете проверить это.