我正在尝试对多个数据库进行架构更新,具体取决于所使用的配置环境,更改将在数据库或其他数据库中完成。
我试图将自己的 --env 参数添加到 Doctrine 脚本中:
vendor/bin/doctrine --env=dev orm:schema-tool:update --force -vvv --dump-sql
在我的 cli-config.php 中,我读取了参数并选择了我的数据库,但之后它失败了:
[RuntimeException]
The "--env" option does not exist.
Exception trace:
() at /var/www/consupermiso2-frontend/vendor/symfony/console/Input/ArgvInput.php:213
Symfony\Component\Console\Input\ArgvInput->addLongOption() at /var/www/consupermiso2-frontend/vendor/symfony/console/Input/ArgvInput.php:152
Symfony\Component\Console\Input\ArgvInput->parseLongOption() at /var/www/consupermiso2-frontend/vendor/symfony/console/Input/ArgvInput.php:86
Symfony\Component\Console\Input\ArgvInput->parse() at /var/www/consupermiso2-frontend/vendor/symfony/console/Input/Input.php:61
Symfony\Component\Console\Input\Input->bind() at /var/www/consupermiso2-frontend/vendor/symfony/console/Command/Command.php:231
Symfony\Component\Console\Command\Command->run() at /var/www/consupermiso2-frontend/vendor/symfony/console/Application.php:878
Symfony\Component\Console\Application->doRunCommand() at /var/www/consupermiso2-frontend/vendor/symfony/console/Application.php:195
Symfony\Component\Console\Application->doRun() at /var/www/consupermiso2-frontend/vendor/symfony/console/Application.php:126
Symfony\Component\Console\Application->run() at /var/www/consupermiso2-frontend/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/ConsoleRunner.php:60
Doctrine\ORM\Tools\Console\ConsoleRunner::run() at /var/www/consupermiso2-frontend/vendor/doctrine/orm/bin/doctrine.php:66
include() at /var/www/consupermiso2-frontend/vendor/doctrine/orm/bin/doctrine:4
orm:schema-tool:update [--complete] [--dump-sql] [-f|--force]
如何选择使用 cli 工具在哪个数据库中工作?
最佳答案
因此,我们假设您有一个应用程序,它有自己的数据库,并且它使用单独的数据库来存储其所有帮助系统数据。该帮助数据库可以在同一服务器上不同的应用程序安装之间共享。
在 Symfony 中,可以轻松指定不同的实体管理器,以便您可以挑选要使用的实体管理器。这可以通过命令行或 Controller 轻松完成。
在您的 config.yml
文件中,您将有类似这样的内容(这些参数将位于 parameters.yml
中):
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
help:
driver: "%database_driver2%"
host: "%database_host2%"
port: "%database_port2%"
dbname: "%database_name2%"
user: "%database_user2%"
password: "%database_password2%"
charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
MainBundle: ~
help:
connection: customer
mappings:
HelpBundle: ~d
然后您将能够从命令行指定要使用的数据库,如下所示:
php app/console doctrine:schema:update --force --em=help
或者在 Controller 中像这样:
$entityManager = $this->get('doctrine')->getManager('help');
如果您需要更多信息,请查看symfony docs
关于php - Doctrine cli 中的多种环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023737/