我在Symfony 2.8项目中使用原则ORM。如何设置与doctrine2和symfony的第二个数据库连接?
我的项目包含几个Bundle。对于生成报告的一个Bundle,我希望将数据库服务器与从属复制一起使用,以免压缩主数据库服务器。 如何设置?
我试过到目前为止:
在config.yml
学说配置
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
slave:
driver: pdo_mysql
host: '%database_host_slave%'
port: '%database_port_slave%'
dbname: '%database_name_slave%'
user: '%database_user_slave%'
password: '%database_password_slave%'
charset: UTF8
在这里,我创建与存储在我的parameters.yml值我的第二个数据库连接。
我似乎得到了我试图在同一个文件中设置不正确的orm配置。 让我第一次解释我需要什么: 我有一个运行控制台命令的“ReportingBundle”。实体管理器只需要向所需的数据库服务器提供适当的授权。查询本身就是SQL,我不使用这些实体。
我这个包service.yml:
services:
myproject.reporting.service.csv_report_attachment:
class: Myproject\ReportingBundle\Service\DefaultCsvReportAttachmentService
arguments: ['@doctrine.orm.slave_entity_manager', '@logger', '@myproject.reporting.service.php_template_engine', 'reportingHtmlMailTemplate.php']
现在我的非功能ORM设置在config.yml:
ORM配置
orm:
auto_generate_proxy_classes: '%kernel.debug%'
# naming_strategy: doctrine.orm.naming_strategy.underscore
default_entity_manager: default
entity_managers:
slave:
connection: slave
mappings:
MyprojectReportingBundle: ~
default:
connection: default
auto_mapping : true
metadata_cache_driver: redis
query_cache_driver: redis
result_cache_driver: redis
这导致
[Doctrine\ORM\ORMException]
Unknown Entity namespace alias 'MyprojectReportingBundle'.
问题: 什么是正确的语法,所以我的查询从服务器,而不是默认的服务器上运行?
如果您从slave的entity_managers定义中删除映射属性并使用auto_mapping:true,那么它是否工作? – beterthanlife
我试过了。 然后它抱怨,你不能一次使用automapping:true为两个实体管理器。 [LogicException] 你不能让一个以上的经理“auto_mapping”在同一时间(在“从”发现和默认“)。 –