我正在编写Symfony项目(使用symf 1.4版本,Propel作为其ORM),其中一些数据存储在MySQL数据库中,其他一些数据存储在PostgreSQL数据库中的另一台服务器上。
更确切地说,我希望同时在MySQL数据库和PostgreSQL数据库中的其他模型中存储一些模型,并且无需显式数据库切换即可无缝执行(我的意思是Propel将使用正确的数据库连接和SQL方言来检索/存储数据)。 MySQL部分的模型与PostgreSQL没有关系。
有可能吗?如果是的话,我也想知道如何设置开发环境(我想在开发和生产环境中访问不同的MySQL / PostgreSQL DB)。
UPD:我已经找到了关于这个问题的问题:Multiple databases support in Symfony但是我必须检查它是否适用于最新版本的Symfony。答案 0 :(得分:2)
我每天都在使用symfony,实际上你可以有2个数据库来存储模型的不相关部分。你需要在你的database.yml中设置两个连接(我不熟悉posgress所以你必须弄清楚如何设置它相关):
mysql_connection:
class: sfPropelDatabase
param:
phptype: mysql
classname: MysqlPropelPDO
dsn: ''
username: user
password: pass
encoding: UTF-8
pooling: true
postgress_connection:
class: sfPropelDatabase
param:
phptype: postgres
classname: PostgresPropelPDO
dsn: ''
username: user
password: pass
encoding: UTF-8
pooling: true
完成后,我们应该开始使用schema.yml文件或文件(因为您将使用2个数据库,我建议有2个文件,一个用于mysql,另一个用于postgres数据库):< / p>
mysql_schema.yml文件:
//This is how you tell witch connection you are using for this tables
connection: mysql_connection
classes:
CLassName:
tableName: table_name
columns:
id:
name:
type: varchar(255)
required: true
[...]
postgres_schema.yml文件:
connection: postgress_connection
classes:
ClassName:
tableName: table_name
columns:
id:
name:
type: varchar(255)
required: true
[...]
完成模式文件的设置后,您应该好好去创建所有课程并开始玩乐。希望这有帮助
答案 1 :(得分:1)
我相信你可以!
Google为此提供了不少结果,请尝试
http://snippets.symfony-project.org/snippet/194
这是基于旧版本的推进/ symfony,但从快速看,我相信它仍然有效。此外,最近的评论表明它有效。