我正在做一个使用Propel ORM的项目,需要连接到两个不同的数据库来检索某些数据。我试图在网上搜索指南,但没有运气,因为所有的“解决方案”要么是特定于Symphony的,要么就是根本不起作用。
我希望能够指定两个连接,并能够在某些查询期间通过将连接别名传递给查询在它们之间切换。但是,同时打开两个连接也是可以接受的。
任何和所有的帮助都非常感谢!
谢谢,迪马
发布于 2012-01-20 01:45:24
根据Propel API Docs,您可以通过以下方式在schema.xml文件中定义数据库连接:
<?xml version="1.0" encoding="UTF-8"?>
<database name="bookstore" defaultIdMethod="native">
<!-- table definitions go here -->
</database>然后,您可以在runtime-conf.xml设置中设置连接参数:
<datasources default="bookstore">
<datasource id="bookstore">
<adapter>mysql</adapter> <!-- sqlite, mysql, mssql, oracle, or pgsql -->
<connection>
<dsn>mysql:host=localhost;dbname=my_db_name</dsn>
<user>my_db_user</user>
<password>my_db_password</password>
</connection>
</datasource>
</datasources>-编辑--
Propel似乎不支持数据库标记的alias属性,但您应该能够做到以下几点:
<?xml version="1.0" encoding="UTF-8"?>
<database name="bookstore_primary" defaultIdMethod="native">
<!-- table definitions go here -->
</database>
<database name="bookstore_secondary" defaultIdMethod="native">
<!-- table definitions go here -->
</database>
<datasources default="bookstore_primary">
<datasource id="bookstore_primary">
<adapter>mysql</adapter> <!-- sqlite, mysql, mssql, oracle, or pgsql -->
<connection>
<dsn>mysql:host=localhost;dbname=bookstore_primary</dsn>
<user>my_db_user</user>
<password>my_db_password</password>
</connection>
</datasource>
</datasources>
<datasources default="bookstore_secondary">
<datasource id="bookstore_secondary">
<adapter>mysql</adapter> <!-- sqlite, mysql, mssql, oracle, or pgsql -->
<connection>
<dsn>mysql:host=localhost;dbname=bookstore_secondary</dsn>
<user>my_db_user</user>
<password>my_db_password</password>
</connection>
</datasource>
</datasources>看看这能不能用。归根结底,真正重要的是可以连接到这两个数据库(使用各自的DSN)。
https://stackoverflow.com/questions/8930615
复制相似问题