отредактируйте файл config.yml в контроллере - PullRequest
0 голосов
/ 19 сентября 2018

По некоторым причинам безопасности у каждого клиента есть своя собственная база данных в моем приложении 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: ~

Iможно получить файл config.yml с

$value = Yaml::parseFile('/pathtofile/app/config/config.yml');

значение $ содержит массив, но даже когда я использую array_push (), результат не читается

Мои вопросы:

Сначала я хочу автоматически создать новое соединение с базой данных в doctrine и новую конфигурацию orm в файле config.yml, когда администратор создает нового пользователя после того, как я хочу выполнить doctrine:database:create --connection=dbname и doctrine:schema:update --force --em=emname все это в контроллере без редактирования вручнуюфайл config.yml

Спасибо

1 Ответ

0 голосов
/ 20 сентября 2018

Решение состоит в том, чтобы заменить 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);

Документация

...