問題描述
我將配置文件中的代碼粘貼到
I pasted the code from the configuration.md file to
module.config.php
module.config.php
'doctrine' => array(
'connection' => array(
'orm_crawler' => array(
'driverClass' => 'DoctrineDBALDriverPDOMySqlDriver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'root',
'password' => 'root',
'dbname' => 'crawler',
'driverOptions' => array(
1002 => 'SET NAMES utf8'
),
)
)
),
'configuration' => array(
'orm_crawler' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'driver' => 'orm_crawler',
'generate_proxies' => true,
'proxy_dir' => 'data/DoctrineORMModule/Proxy',
'proxy_namespace' => 'DoctrineORMModuleProxy',
'filters' => array()
)
),
'driver' => array(
'Crawler_Driver' => array(
'class' => 'DoctrineORMMappingDriverAnnotationDriver',
'cache' => 'array',
'paths' => array(
__DIR__ . '/../src/Crawler/Entity'
)
),
'orm_crawler' => array(
'class' => 'DoctrineORMMappingDriverDriverChain',
'drivers' => array(
'CrawlerEntity' => 'Crawler_Driver'
)
),
),
'entitymanager' => array(
'orm_crawler' => array(
'connection' => 'orm_crawler',
'configuration' => 'orm_crawler'
)
),
'eventmanager' => array(
'orm_crawler' => array()
),
'sql_logger_collector' => array(
'orm_crawler' => array(),
),
'entity_resolver' => array(
'orm_crawler' => array()
),
),
```
模塊.php
public function getServiceConfig()
{
return array(
'factories' => array(
'doctrine.authenticationadapter.orm_crawler' => new DoctrineModuleServiceAuthenticationAdapterFactory('orm_crawler'),
'doctrine.authenticationstorage.orm_crawler' => new DoctrineModuleServiceAuthenticationStorageFactory('orm_crawler'),
'doctrine.authenticationservice.orm_crawler' => new DoctrineModuleServiceAuthenticationAuthenticationServiceFactory('orm_crawler'),
'doctrine.connection.orm_crawler' => new DoctrineORMModuleServiceDBALConnectionFactory('orm_crawler'),
'doctrine.configuration.orm_crawler' => new DoctrineORMModuleServiceConfigurationFactory('orm_crawler'),
'doctrine.entitymanager.orm_crawler' => new DoctrineORMModuleServiceEntityManagerFactory('orm_crawler'),
'doctrine.driver.orm_crawler' => new DoctrineModuleServiceDriverFactory('orm_crawler'),
'doctrine.eventmanager.orm_crawler' => new DoctrineModuleServiceEventManagerFactory('orm_crawler'),
'doctrine.entity_resolver.orm_crawler' => new DoctrineORMModuleServiceEntityResolverFactory('orm_crawler'),
'doctrine.sql_logger_collector.orm_crawler' => new DoctrineORMModuleServiceSQLLoggerCollectorFactory('orm_crawler'),
'doctrine.mapping_collector.orm_crawler' => function (endServiceManagerServiceLocatorInterface $sl) {
$em = $sl->get('doctrine.entitymanager.orm_crawler');
return new DoctrineORMModuleCollectorMappingCollector($em->getMetadataFactory(), 'orm_crawler_mappings');
},
'DoctrineORMModuleFormAnnotationAnnotationBuilder' => function(endServiceManagerServiceLocatorInterface $sl) {
return new DoctrineORMModuleFormAnnotationAnnotationBuilder($sl->get('doctrine.entitymanager.orm_crawler'));
},
),
);
}
我收到以下錯誤:
C:xamppvhostszf2-tradevendorzendframeworkzendframeworklibraryendServiceManagerServiceManager.php:529
留言:
ZendMvcControllerPluginManager::get was unable to fetch or create an instance for getServiceManager
我做錯了什么?請幫忙.
What am I doing wrong? Please help.
問候馬修
推薦答案
Mac,歡迎使用 stackoverflow!您不需要為每個連接分別定義自定義工廠.DoctrineORMModule 已經為我們處理了這項工作.
Mac, welcome to stackoverflow! You don't need to define custom factories for each connection respectively. DoctrineORMModule already handles this job for us.
當您需要實體管理器時,通過在別名中使用它們的名稱從服務定位器實例中獲取它,如下所示:
When you need the entity managers, get it from service locator instance by using their names in the alias like this:
$this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
或
$this->getServiceLocator()->get('doctrine.entitymanager.orm_alternative');
我正在分享我當前應用程序的數據庫配置之一,該配置當前同時使用 PostgreSQL 和 MySQL 連接.
I'm sharing one of my current application's database configuration which currently uses both PostgreSQL and MySQL connections.
<?php
return array(
'doctrine' => array(
'connection' => array(
// Default DB connection
'orm_default' => array(
'driverClass' => 'DoctrineDBALDriverPDOPgSqlDriver',
'params' => array(
'host' => '1.2.3.4',
'user' => 'pdbuser',
'port' => '5432',
'password' => '****',
'dbname' => 'mydb',
'driver' => 'pdo_pgsql',
),
),
// Alternative DB connection
'orm_alternative' => array(
'driverClass' => 'DoctrineDBALDriverPDOMySqlDriver',
'params' => array(
'host' => '4.5.6.7',
'user' => 'dbuser',
'port' => '3306',
'password' => '****',
'dbname' => 'mydb',
'driver' => 'pdo_mysql',
),
),
),
// Entity Manager instantiation settings
'entitymanager' => array(
'orm_default' => array(
'connection' => 'orm_default',
'configuration' => 'orm_default',
),
'orm_alternative' => array(
'connection' => 'orm_alternative',
'configuration' => 'orm_alternative',
),
),
// 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_alternative' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'hydration_cache' => 'array',
'generate_proxies' => true,
),
),
),
);
您可以輕松地將此配置與您的配置合并.
You can easily merge this configuration with yours.
希望有幫助.
這篇關于Zend Framework 2 和 Doctrine 2 - 多個數據庫的配置的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!