Symfony项目,模型存储在多个数据库中

时间:2011-06-03 02:14:05

标签: symfony1 symfony-1.4 propel multiple-databases

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

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

有可能吗?如果是的话,我也想知道如何设置开发环境(我想在开发和生产环境中访问不同的MySQL / PostgreSQL DB)。

UPD:我已经找到了关于这个问题的问题:Multiple databases support in Symfony但是我必须检查它是否适用于最新版本的Symfony。

2 个答案:

答案 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,但从快速看,我相信它仍然有效。此外,最近的评论表明它有效。