我在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」在同一時間(在「從」發現和默認「)。 –