出于安全考虑,每个客户在我的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=dbname
和doctrine:schema:update --force --em=emname
之后
在控制器中无需手动编辑config.yml文件
谢谢
答案 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);