2016-12-12 1 views
0

Я работаю с Zend 2 с нескольких дней, и у меня есть небольшая проблема. Мы используем доктрину и пытаемся создать схему базы данных из объектов. Я указываю в каждом модуле, где доктрина должна найти сущности, используя файл module.config.php каждого модуля. В настоящее время у меня есть 2 модуля с файлами module.config 2 Diferent и эти строки, где я указываю пути, где доктрина должна найти объекты:Zend 2 Framework - 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 и игнорирует их. Если я прокомментирую строки модуля module.config.php модуля MailTemplate и снова запустим команду, я смогу, чтобы эти таблицы из объекта Application Module были созданы успешно. Поэтому я полагаю, что некоторая информация из 2 файлов module.config перезаписывается.

Мне нужно сгенерировать DB shema из разных сущностей из разных модулей, и я не знаю, как это сделать.

Спасибо!

ответ

0

Причина этого заключается в том, что вы настраиваете то же имя для водителей. Хотя zend объединяет конфигурации, он будет переопределять конфигурации с одинаковыми именами.

module.config.php (MailTemplates (модуль))

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

module.config.php (Application (модуль))

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

Большое вам спасибо за помощь! :) @leo_ap –

0

Zf2 module.config.php файл не перезаписывается. zf2 объединить все module.config.php в один файл.

Zend \ ModuleManager \ Listener \ ConfigListener запускает специальное событие, Zend \ ModuleManager \ ModuleEvent :: EVENT_MERGE_CONFIG, после слияния всей конфигурации, но до его передачи в ServiceManager. Выслушав это событие, вы можете проверить объединенную конфигурацию и управлять ею.

Посмотрите, как Зенд слияния файлы конфигурации https://framework.zend.com/manual/2.4/en/tutorials/config.advanced.html#configuration-mapping-table

+0

Благодаря @D Coder! –