Symfony 3.2 - 在运行时设置环境变量

时间:2017-10-12 03:56:55

标签: doctrine-orm environment-variables runtime symfony-3.2

是否可以在运行时从控制器分配环境变量?

我正在尝试将数据库名称分配给parameters.yml的环境变量,但是我得到了一个例外。

"exception":[{"message":"Impossible to call set() on a frozen ParameterBag."

LoginController.php

$this->container->setParameter('env(DB_NAME)', 'company');
$env = $this->container->getParameter('env(DB_NAME)');
var_dump($env);
die();

config.yml

companies:
            driver:   pdo_mysql
            host:     '%database_host%'
            port:     '%database_port%'
            dbname:   "%env(DB_NAME)%"
            user:     '%database_user%'
            password: '%database_password%'
            charset:  UTF8

parameters.yml

parameters:
    database_host: 127.0.0.1
    database_port: null
    env(DB_NAME): default # Default value for env
    database_name: "%env(DB_NAME)%"
    database_user: root
    database_password: root

知道如何分配变量吗?

插入所有数据库的实体管理器对我来说不是一个解决方案,因为有数百个数据库,其中凭证用户/密码和表结构是相同的。只更改数据库的名称。

非常感谢您的进步!

此致

0 个答案:

没有答案