根据使用的域更改parameters.yml(数据库)

时间:2017-12-11 00:33:31

标签: php database parameters symfony-3.3

我想从parameters.yml更改som parapeters,具体取决于访问者用来访问我的域名。

实际上,我只需要更改数据库。如果用户投掷www.domain1.com我需要使用database1但是如果他来扔www.domain2.com我需要使用相同的代码但是使用database2。

有可能吗?

2 个答案:

答案 0 :(得分:0)

你有答案。只需使用域等其他参数配置另一个内核。但是symfony说:

  

不再推荐使用多个内核创建应用程序   Symfony的。考虑改为创建多个小型应用程序。

阅读此doc

之后,您只需要在加载器函数中加载您需要考虑该域参数的文件。

希望有所帮助

  

被修改

您还可以阅读此another doc并创建新环境。认为这对你更好。

希望它有所帮助!

答案 1 :(得分:0)

您想要实现的是多租户应用程序。

在配置文件中,您应该为数据库创建两个连接,一个用于主数据库,其中包含应用程序共享数据,另一个是动态的,用于租户特定数据。

doctrine:
dbal:
    default_connection:       default
    connections:
        default:
            driver:   pdo_mysql
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%database_name%"
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
        dynamic_conn:
            driver:   pdo_mysql
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   ~
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
    # if using pdo_sqlite as your database driver:
    #   1. add the path in parameters.yml
    #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
    #   2. Uncomment database_path in parameters.yml.dist
    #   3. Uncomment next line:
    #     path:     "%database_path%"

orm:
    default_entity_manager:   default
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
        default:
            connection:       default
            mappings:
                MyBundle: ~
        dynamic_em:
            connection:       dynamic_conn
            mappings:
                MyBundle: ~

现在你必须通过监听请求和检查域来设置动态切换数据库的服务,

我建议您查看此存储库,它是您尝试实现的内容的一个示例https://github.com/uirapuru/multidb