2

我正在编写 Symfony 项目(使用 symfony 1.4 版本,Propel 作为其 ORM),其中一些数据存储在 MySQL 数据库中,而其他一些数据存储在 PostgreSQL 数据库中的另一台服务器上。

更准确地说,我想同时将一些模型存储在 MySQL 数据库中,并将其他模型存储在 PostgreSQL 数据库中,并且在没有显式数据库切换的情况下无缝执行(我的意思是 Propel 将使用正确的数据库连接和 SQL 方言来检索/存储数据)。MySQL 部分的模型与 PostgreSQL 没有关系。

是否可以?如果是,我也想知道如何设置开发环境(我想在开发和生产环境中访问不同的 MySQL/PostgreSQL 数据库)。

UPD:我发现了关于重新解决这个问题的问题:Symfony 中的多个数据库支持但我必须检查它是否适用于最新版本的 Symfony。

4

2 回答 2

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 数据库):

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
      [...]

完成架构文件的设置后,您应该一切顺利,创建所有类并开始享受乐趣。希望这可以帮助

于 2011-06-06T15:18:55.957 回答
1

我相信你可以!

谷歌有很多结果,试试

http://snippets.symfony-project.org/snippet/194

那是基于旧版本的 propel/symfony,但快速浏览一下,我相信它仍然有效。另外,最近有评论表明它有效。

于 2011-06-03T07:23:50.260 回答