2
有没有办法做dblink在Doctrine中做的事情?在Doctrine和PostgreSQL的不同服务器上加入不同的数据库
我需要从两个服务器上的两个数据库连接两个表,并且不想使用RawSql,但使用模型。
在此先感谢
有没有办法做dblink在Doctrine中做的事情?在Doctrine和PostgreSQL的不同服务器上加入不同的数据库
我需要从两个服务器上的两个数据库连接两个表,并且不想使用RawSql,但使用模型。
在此先感谢
什么你想是不是“技术上”的支持作为主义设计特征。
所以,如果你想做到这一点,你会与传统的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博客上详细讨论。所以你可以检查一下。
正确的链接上面提到的学说博客条目是: http://www.doctrine-project.org/blog/cross-database-joins.html 我试图编辑后纠正链接,但它没有达到编辑所需的最小“6”字符。 – s1d