Doctrine 2 - 多数据库配置和使用 [英] Doctrine 2 - Multiple databases configuration and use
问题描述
我有一个带有 MySQL 数据库的 Symfony2 项目:
I have a Symfony2 project with a MySQL db:
#app/config/config.yml
doctrine:
dbal:
driver: %database_driver% # <
host: %database_host% # |
port: %database_port% # | Defined in
dbname: %database_name% # | parameters.ini
user: %database_user% # |
password: %database_password% # <
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
现在我想对其他数据库进行简单的查询(如例行调用).
Now I'd like to make simple queries (like routine calls) to an other database.
我应该在配置文件中定义另一个 dbal 吗?
如果是,如何在保持项目默认连接的同时进行配置?
我是否必须为每个连接配置一个 orm?
Should I define an other dbal into the config file ?
If yes, how can it be configured while keeping the default connection for the project ?
Do I have to configure an orm for each connection ?
推荐答案
您需要添加另一个级别的配置,并且还需要使用 多个实体管理器,因为 Doctrine 为每个数据库连接使用 1 个实体管理器.您的配置可能如下所示:
You need to add another level of configuration and also use multiple entity managers as Doctrine uses 1 entity manager per database connection .. your configuration might look something like this :
doctrine:
dbal:
connections:
default:
driver: %database_driver% # <
host: %database_host% # |
port: %database_port% # | Defined in
dbname: %database_name% # | parameters.ini
user: %database_user% # |
password: %database_password% # <
another:
driver: %database2_driver% # <
host: %database2_host% # |
port: %database2_port% # | Defined in
dbname: %database2_name% # | parameters.ini
user: %database2_user% # |
password: %database2_password% # <
然后你定义你的多个实体管理器
Then you define your multiple entity managers as so
doctrine:
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AcmeDemoBundle: ~
AcmeStoreBundle: ~
another:
connection: another
mappings:
AcmeCustomerBundle: ~
然后在您的操作中,您可以使用以下内容来获取正确的实体管理器:
then in your action you can use the following to get the correct entity manager :
$em = $this->get('doctrine')->getEntityManager('default');
$em = $this->get('doctrine')->getEntityManager('another');
取决于您需要哪个实体管理器
depending on which entity manager you required
这篇关于Doctrine 2 - 多数据库配置和使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!