2016-12-12 16 views
0

私は数日からZend 2で作業していますが、少し問題があります。私たちはdoctrineを使い、エンティティからデータベーススキーマを生成しようとしています。私は各モジュールで、doctrineが各モジュールのmodule.config.phpファイルを使用してエンティティを見つけるべき場所を指定します。現在、私は2つのdiferentのmodule.configファイルと2つのモジュールがあり、これらは私がDoctrineはエンティティを見つける必要があるパスを指定する行です:Zend 2フレームワーク - Doctrineは与えられた2つのエンティティからテーブルを生成します

module.config.php(MailTemplates(モジュール))

'doctrine' => array(
     'driver' => array(
      'application_entities' => array(
       'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
       'cache' => 'array', 
       'paths' => (__DIR__ . '/../src/MailTemplates/Model') 
      ), 
      'orm_default' => array(
       'drivers' => array(
        'MailTemplates\Model' => 'application_entities' 
       ), 
      ), 
     ), 
    ), 

およびmodule.config.php(アプリケーション(モジュール))

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

);

エンティティ(./vendor/bin/doctrine-module orm:schema-tool:create)からスキーマを生成するコマンドを実行すると、MailTemplateテーブルのみが作成され、Applicationモジュールのものは無視されます。私がMailTemplateモジュールのmodule.config.phpの行をコメントして、コマンドをもう一度実行すると、アプリケーションモジュールエンティティのテーブルが正常に作成されたことがわかります。だから私は何とか2つのmodule.configファイルからの情報が上書きされていると思います。

異なるモジュールから別のエンティティからDBシェーマを生成する必要がありますが、私はその方法がわかりません。

ありがとうございます!

答えて

0

参照してください。 zendは設定をマージしますが、同じ名前の設定を上書きします。

module.config.php(MailTemplates(モジュール))

[...] 
'drivers' => array( 
    'MailTemplates\Model' => 'application_entities' <-- rename this 
) 
[..] 

module.config.php(アプリケーション(モジュール))

[...] 
'drivers' => array( 
    'Application\Entity' => 'application_entities' 
) 
[..] 
+0

ありがとうございました! :) @leo_ap –

0

Zf2 module.config.phpファイルは上書きされません。 zf2すべてのmodule.config.phpを1つのファイルにマージします。

Zend \ ModuleManager \ Listener \ ConfigListenerは、すべての構成をマージした後、ServiceManagerに渡す前にZend \ ModuleManager \ ModuleEvent :: EVENT_MERGE_CONFIGという特別なイベントをトリガーします。このイベントをリッスンすることで、マージされた設定を調べて操作することができます。

は、この理由は、あなたがドライバに同じ名前を設定しているということですかZendのマージ設定ファイルhttps://framework.zend.com/manual/2.4/en/tutorials/config.advanced.html#configuration-mapping-table

+0

おかげ@Dコーダー! –

関連する問題