3

私は2つのデータベース(MySQLとOracle)を持っています.betweek sf2と両方のデータベースに接続しました.ここに私のconfig.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
            # 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

私の質問は、どうすれば 2 番目のデータベース (Oracle) でコンソール コマンド (doctrine:database:create ...) のようなコマンドを実行できますか?

4

2 に答える 2

0

最初に、コマンドに関するチュートリアルと、コマンドにオプションとパラメーターを渡す方法を読む必要があります。また、オプションとパラメーターを区別する方法。

独自のコマンドを作成する場合...

オプションを渡さない場合 (デフォルトのデータベースを使用します)、渡す場合は、それが有効なオプションであることを確認し、渡されたデータベース接続名を使用します。

Doctrine は Mysql と密結合していないため、利用可能なほとんどすべての一般的なデータベースを使用できます。

また、コマンドはコンテナに対応していることにも注意してください。これは、コマンドがコンテナーにアクセスできることを意味し、それを介して doctrine などのサービスにアクセスできます。

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
于 2014-05-05T20:53:08.880 に答える