在控制器中编辑config.yml文件

时间:2018-09-19 13:25:31

标签: symfony doctrine-orm orm

出于安全考虑,每个客户在我的Symfony 3.4应用程序中都有自己的数据库 这是我的config.yml文件的一个示例:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   default
                user:     user
                password: password
                charset:  UTF8
            customer1:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   customer1
                user:     user
                password: password
                charset:  UTF8
            customer2:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   customer2
                user:     user
                password: password
                charset:  UTF8

和ORM:

orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        default_entity_manager: default
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                connection: default
                mappings:
                    BackBundle:  ~
                    BackBundle: ~
            customer1:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: false
                connection: customer1
                mappings:
                    BackBundle: ~
            customer2:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: false
                connection: customer2
                mappings:
                    BackBundle: ~

我可以使用

获取config.yml文件。
$value = Yaml::parseFile('/pathtofile/app/config/config.yml');

$ value包含一个数组,但是即使当我使用array_push()时,结果也不可读

我的问题:

首先,我想在管理员创建新用户时自动创建新的数据库连接和config.yml文件中的新orm配置 我要执行doctrine:database:create --connection=dbnamedoctrine:schema:update --force --em=emname之后 在控制器中无需手动编辑config.yml文件

谢谢

1 个答案:

答案 0 :(得分:0)

一种解决方案是用新生成的文件替换actuel config.yml。

赞:

use Symfony\Component\Yaml\Yaml;

$value = Yaml::parseFile('/pathtofile/app/config/config.yml');
$value["database_host"] = "10.2.2.1"

file_put_contents('/pathtofile/app/config/config.yml', $value);

Documentation