Генерация сущностей Doctrine 2 с несколькими подключениями к базе данных в Zend Framework 2

Для веб-приложения мне нужно работать с 3 отдельными базами данных:

  • MySQL для всей логики приложения, такой как логин
  • MSSQL сервер для вставки записей
  • Сервер Oracle для вставки записей

Теперь я прочитал много учебников и руководств по настройке этих баз данных, так что теперь это выглядит так:

doctrine.global.php

return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => '123.123.123.123',
'port' => '3306',
'dbname' => 'db_name',
),
),
'orm_oracle' => array(
'driverClass' => 'Doctrine\DBAL\Driver\OCI8\Driver',
'params' => array(
'host' => '321.321.321.321',
'port' => '1521',
'dbname' => 'something',
'driver' => 'oci8',
'servicename' => 'something',
),
),
'orm_microsoft' => array(
'driverClass' => 'Doctrine\DBAL\Driver\SQLSrv\Driver',
'params' => array(
'host' => '231.231.231.231',
'port' => '1433',
'dbname' => 'something',
'driver' => 'sqlsrv',
),
),
)
)
);

doctrine.local.php *

return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'user' => 'brportal',
'password' => '27607097b4',
),
),
//Alternative DB connection
'orm_oracle' => array(
'driverClass' => 'Doctrine\DBAL\Driver\OCI8\Driver',
'params' => array(
'user' => 'joost',
'password' => '4b58tL8DFv7G',
),
),
'orm_microsoft' => array(
'driverClass' => 'Doctrine\DBAL\Driver\SQLSrv\Driver',
'params' => array(
'user' => 'joost',
'password' => '4b58tL8DFv7G',
),
),
),
'entitymanager' => array(
'orm_default' => array(
'connection'    => 'orm_default',
'configuration' => 'orm_default',
),
'orm_oracle' => array(
'connection'    => 'orm_oracle',
'configuration' => 'orm_oracle',
),
'orm_microsoft' => array(
'connection'    => 'orm_microsoft',
'configuration' => 'orm_microsoft',
),
),

// Use array cache locally, also auto generate proxies on development environment.
'configuration' => array(
'orm_default' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'hydration_cache' => 'array',
'generate_proxies' => true,
),
'orm_oracle' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'hydration_cache' => 'array',
'generate_proxies' => true,
),
'orm_microsoft' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'hydration_cache' => 'array',
'generate_proxies' => true,
),
),
)
);

module.php

'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '\..\src\\' . __NAMESPACE__ . '\Entities')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entities' => __NAMESPACE__ . '_driver'
)
),
'oracle_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '\..\src\\' . __NAMESPACE__ . '\Entities\Oracle')
),
'orm_oracle' => array(
'drivers' => array(
__NAMESPACE__ . '\Entities\Oracle' => 'oracle_driver'
)
),
'microsoft_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '\..\src\\' . __NAMESPACE__ . '\Entities\Microsoft')
),
'orm_microsoft' => array(
'drivers' => array(
__NAMESPACE__ . '\Entities\Microsoft' => 'microsoft_driver'
)
)
)
)

Но сейчас мне бы очень хотелось иметь простой способ (пере) генерировать сущности баз данных mssql и oracle (аннотации). Он уже работал с базой данных MySQL, но я не могу узнать, как указать соединение с базой данных с doctrine-module orm:convert-mapping,

Мне было интересно, если кто-нибудь может мне помочь с этим?

Заранее спасибо, ребята!

PS: я уже читал:
Zend Framework 2 и Doctrine 2 — настройка для нескольких баз данных

2

Решение

Суть в том, что он не поддерживается в модуле ZF2 DoctrineORM. Eсть особенность запроса на это в репо.

В то же время есть модуль, который предоставляет модуль shim, который добавляет опцию —em
https://github.com/SwissEngine/Doctrine-Module-Extension

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]