2014-12-27 2 views
1

Я пытаюсь добавить дополнительное подключение к моей конфигурации доктрины. мое соединение orm_default работает отлично, и теперь я пытаюсь добавить новый модуль со своей конфигурацией Doctrine (в основном, для обучения, но его довольно раздражает, что я не могу заставить его работать).Вторичное подключение к базе данных с Doctrine 2 и ZF2

Модуль называется Frontpage, и все соответствующие коды в этом, подробно имя пользователя/пароль, который проживает в local.php кроме ...

Моя ошибка

Zend\ServiceManager\Exception\ServiceNotCreatedException 
An exception was raised while creating "doctrine.entitymanager.orm_hosts"; no instance returned 

Также дополнительно вниз StackTrace (последнее исключение), которые я думаю, это важно, но не знаю, как исправить ...

Zend\Stdlib\Exception\BadMethodCallException 
The option "hydration_cache" does not have a matching setHydrationCache setter method which must be defined 

Вот мой модуль конфигурационный файл (соответствующие части):

'doctrine' => [ 
    'connection' => [ 
     'orm_hosts' => [ 
      'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
      'params' => [ 
       'host' => '127.0.0.1', 
       'port' => '3306', 
       'dbname' => 'hosts', 
      ], 
     ], 
    ], 
    'entitymanager' => array(
     'orm_hosts' => array(
      'connection' => 'orm_hosts', 
      'configuration' => 'orm_hosts' 
     ) 
    ), 
    'configuration' => array(
     'orm_hosts' => array(
      'driver'   => 'orm_hosts', 
      'generate_proxies' => true, 
      'proxy_dir'   => 'data/DoctrineORMModule/Proxy', 
      'proxy_namespace' => 'DoctrineORMModule\Proxy', 
      'filters'   => array(), 
      'metadata_cache' => 'array', 
      'query_cache'  => 'array', 
      'result_cache'  => 'array', 
      //'hydration_cache' => 'array', 
     ) 
    ), 

    'driver' => array(
     'orm_hosts' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\DriverChain', 
      'drivers' => array(
       'Common\Entity' => 'Hosts_Driver' 
      ) 
     ), 
     'Hosts_Driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(
       __DIR__ . '/../src/Common/Entity' 
      ) 
     ), 
    ), 
    'eventmanager' => array(
     'orm_hosts' => array() 
    ), 

    'sql_logger_collector' => array(
     'orm_hosts' => array(), 
    ), 

    'entity_resolver' => array(
     'orm_hosts' => array() 
    ), 
], 

И getServiceConfig моего module.php (в):

public function getServiceConfig() 
{ 
    return array(
     'factories' => array(
      'doctrine.connection.orm_hosts'   => new Service\DBALConnectionFactory('orm_hosts'), 
      'doctrine.configuration.orm_hosts'  => new Service\ConfigurationFactory('orm_hosts'), 
      'doctrine.entitymanager.orm_hosts'  => new Service\EntityManagerFactory('orm_hosts'), 

      'doctrine.entity_resolver.orm_hosts'  => new Service\EntityResolverFactory('orm_hosts'), 
      'doctrine.sql_logger_collector.orm_hosts' => new Service\SQLLoggerCollectorFactory('orm_hosts'), 
      'doctrine.driver.orm_hosts'    => new \DoctrineModule\Service\DriverFactory('orm_hosts'), 
      'doctrine.eventmanager.orm_hosts'   => new \DoctrineModule\Service\EventManagerFactory('orm_hosts'), 

      'DoctrineORMModule\Form\Annotation\AnnotationBuilder\orm_hosts' => function(\Zend\ServiceManager\ServiceLocatorInterface $sl) { 
       return new \DoctrineORMModule\Form\Annotation\AnnotationBuilder($sl->get('doctrine.entitymanager.orm_hosts')); 
      }, 
     ), 
    ); 
} 

А вот мой getEntityManager() в IndexController, которая не

/** 
* @return array|EntityManager|object 
*/ 
public function getEntityManager() { 
    if (NULL === $this->em) { 
     /** @var \Doctrine\ORM\EntityManager $em */ 
     $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_hosts'); 
     //$em = $this->getServiceLocator()->get('doctrine')->getManager("orm_hosts"); 
     $this->em = $em; 
    } 
    return $this->em; 
} 

Любая помощь будет оценена gratly :)

С уважением Richard

ответ

0

Хорошо, так что я до сих пор не знаю, что случилось с выше кодом, но если удалить

'Hydration_cache' => 'array' 

В конфигурации доктрины из моего модуля конфигурации, это на самом деле работает! Тем не менее, если кто-то хочет объяснить, что произойдет, я был бы признателен, если бы знал больше :)

Смежные вопросы