我正在使用Symfony3應用程序,我想要建立到不同數據庫的多個連接。Symfony3:如何設置多個連接?
我一直在環顧四周,發現有關entitymanagers和數據庫連接的文檔。所以,現在
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
mapping_types:
enum: string
other:
driver: pdo_mysql
host: "%database_host2%"
port: "%database_port2%"
dbname: "%database_name2%"
user: "%database_user2%"
password: "%database_password2%"
charset: UTF8
mapping_types:
enum: string
orm:
dql:
string_functions:
DAY: DoctrineExtensions\Query\Mysql\Day
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
我可以訪問我的數據庫這樣的:我config.yml配置如下
$con2 = $this->get('doctrine.dbal.other_connection');
$orders = $con2->fetchAll('SELECT * FROM orders');
但我真正需要的是配置第二個orm映射連接將允許我與實體進行交互,而不是直接處理第二個數據庫。
orm:
dql:
string_functions:
DAY: DoctrineExtensions\Query\Mysql\Day
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
other:
connection: other
mappings:
OtherBundle: ~
這將引發異常:
ParseException的在Parser.php行296: 無法在行78解析(近「所以,再一次爲文檔說我的學說ORM標籤下添加entity_managers:「)。
我應該如何配置我的config.yml以允許我的第二個數據庫連接使用orm映射?我應該刪除dql標籤並僅在特定的實體管理器標籤下使用它嗎?
錯誤與YAML語法錯誤有關。但是,這並不反映在此處顯示的示例配置中。您可能想要顯示完整的配置文件。 – xabbuh