如何选择到数据库的连接,当我使用控制台Symfony2的

问题描述:

我有两个数据库(MySQL和Oracle),我没有连接betweek SF2和两个数据库,这是我config.yml文件:如何选择到数据库的连接,当我使用控制台Symfony2的

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 
      # if using pdo_sqlite as your database driver, add the path in parameters.yml 
      # e.g. database_path: "%kernel.root_dir%/data/data.db3" 
      # path:  "%database_path%" 
     sysman: 
      driver: %database_driver2% 
      host:  %database_host2% 
      port:  %database_port2% 
      dbname: %database_name2% 
      user:  %database_user2% 
      password: %database_password2% 
      charset: UTF8 

我的问题是,我怎么能在第二数据库(甲骨文)上运行控制台命令,命令,如(学说:数据库:创建...),并感谢

使用--connection参数:

php app/console doctrine:database:create --connection=default 

php app/console doctrine:database:create --connection=sysman 
+0

感谢您的回答,当我使用它的SYSMAN方面,我有这样的错误:PHP的通知:使用未定义的常量OCI_COMMIT_ON_SUCCESS的 - 假设“OCI_COMMIT_ON_SUCCESS”在d:\网站\奇\供应商\原则\ DBAL \ lib \ Doctrine \ DBAL \ Driver \ OCI8 \ Driver.php在第37行 – user3303133

+0

好吧,这是另一个问题,您应该在其他问题中提及,首先在Google上快速搜索,您会发现问题:http://*.com/q/9877592/569101 – j0k

+0

非常感谢,我会看到这一点,最后一点,我没有检查文档如何使用oracle与sf2(CRUD)我没有找到任何东西,它是否与MySQL相同? – user3303133

您应该先阅读有关命令的教程以及如何将选项和参数传递给命令。以及如何区分选项和参数。

如果你想使自己的命令......

你可能会想使它像这样的 - 如果你没有通过一个选项(你会使用默认的数据库),如果你通过它,您将确保它是一个有效的选项,并使用传递的数据库连接名称。

Doctrine与Mysql不紧密结合,您可以使用几乎所有最常用的可用数据库。

另请注意,命令是容器感知的。这意味着你的命令可以访问容器中,虽然你可以访问你的服务,如学说:

protected function execute(InputInterface $input, OutputInterface $output) 
{ 
    $connection $input->getArgument('connection'); 
    # Validate connection argument here and use it below 

    $container = $this->getContainer(); 
    $em = $container->get('doctrine')->getManager(); // default db 
    $em = $container->get('doctrine')->getManager('sysman'); // another 

    return 1; 
} 

我写的代码未经测试,原谅我的任何错误,我可能会做。

php app/console doctrine:mapping:info --em=default (same without em option) 
php app/console doctrine:mapping:info --em=sysman 
+0

感谢您的代码,我认为它将逻辑工作,我应该在哪里放置?我认为它在学说中已经完成了,因为当我尝试由@ j0k提出的解决方案时,它会通过并给我另一个错误 – user3303133

+0

仅当使用此代码时,如果编写自己的命令,则不要修改由教义提供的命令。 对于现有的教条命令,使用像我上面更新的东西。 – tomazahlin

+0

是的,我仍然有一个问题,我不能使用doctrine连接到oracle,这个$ this-> get('doctrine') - > getManager('sysman') - > getConnection() - > isConnected()返回假! – user3303133