2

Doctrine 2 を使用した ZF2 2.1.3 アプリがあります。

コンポーザーを使用してインストールしました:

    "zendframework/zendframework": "2.*"
    ,"doctrine/doctrine-orm-module":       "dev-master"

config/autoload/database.local.phpA次のファイルを作成します。

return array(
    'doctrine' => array(
        'connection' => array(
            // Default connection name
            'orm_default' => array(
            'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'dbname'   => 'zf2-experimental',
                    'user'     => 'root',
                    'password' => '',
                ),
            ),
        ),
    ),
);

モジュール ( )Barの下にエンティティを作成し、次のように構成します。Foosrc/Business/Entity/Bar.phpmodule.config.php

'doctrine' => array(
    'driver' => array(
        __NAMESPACE__ . '_driver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'cache' => 'array',
            'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Business/Entity'),
        ),
        'orm_default' => array(
            'drivers' => array(
                __NAMESPACE__ . '\Business\Entity' => __NAMESPACE__ . '_driver',
            ),
        ),
    ),
),

Ok!それはまさにサムがここで言うところです!

次に、単純なFooエンティティを作成し、doctrine cli ツールを実行します。

c:\wamp\www\zf2-Experimental>.\vendor\bin\doctrine-module.bat orm:validate-schema
    [Mapping]  OK - The mapping files are correct.

      [PDOException]
      SQLSTATE[28000] [1045] Access denied for user 'username'@'localhost' (using password: YES)

    orm:validate-schema
c:\wamp\www\zf2-Experimental>

cli ツールは my config/autoload/database.local.php!で接続パラメーターを取得できるようです。

アプリケーションインデックスで、構成をテストしました:

$config = $this->getServiceLocator()->get('config');
\Zend\Debug\Debug::dump($config['doctrine']['connection']['orm_default']);

そして、これが返されました:

array (size=4)
  'configuration' => string 'orm_default' (length=11)
  'eventmanager' => string 'orm_default' (length=11)
  'params' => 
    array (size=5)
      'host' => string 'localhost' (length=9)
      'port' => string '3306' (length=4)
      'user' => string 'root' (length=4)
      'password' => string '' (length=0)
      'dbname' => string 'zf2-experimental' (length=16)
  'driverClass' => string 'Doctrine\DBAL\Driver\PDOMySql\Driver' (length=36)

誰か助けてください! :) ありがとうございます!

4

1 に答える 1

0

さて、私はこれを解決しようとして多くの時間を無駄にし、最終的に解決しました。

ZF1 環境固有の構成スタイルを使用していることを忘れていました。ここで見ることができます!

次の構造でデータベース構成ファイルを作成します(質問に干渉しないと思ったので、これについては以前に言及しませんでした):

'module_listener_options' => array(
    'config_glob_paths'    => array(
        'config/autoload/{,*.}{global,local}.php',
        // Here! My config path is config/autoload/app_env/development/
        'config/autoload/app_env/' . (getenv('APPLICATION_ENV') ?: 'production') . '{,*.}.local.php',
    ),

したがって、私のデータベース構成は実際にはconfig/autoload/app_env/development/database.local.php!

config/autoload/database.local.phpファイルをCLI ツールにコピー アンド ペーストすると、機能します。

しかし、なぜ?Cli ツールが別のディレクトリ内の構成ファイルを検索できないのはなぜですか? サブフォルダを操作する方法はありますか?

助けてくれてありがとう!

于 2013-03-05T16:21:32.147 に答える