【问题标题】:Symfony project with models stored in multiple databases模型存储在多个数据库中的 Symfony 项目
【发布时间】:2011-09-07 12:26:07
【问题描述】:

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

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

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

UPD:我发现关于 SO 重新解决此问题的问题:Multiple databases support in Symfony 但我必须检查它是否适用于最新版本的 Symfony。

【问题讨论】:

    标签: symfony1 symfony-1.4 propel multiple-databases


    【解决方案1】:

    我相信你可以!

    谷歌有不少结果,试试吧

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

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

    【讨论】:

      【解决方案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
            [...]
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多