gpt4 book ai didi

php - Doctrine 2 - 多数据库配置和使用

转载 作者:IT王子 更新时间:2023-10-29 00:11:54 26 4
gpt4 key购买 nike

我有一个带有 MySQL 数据库的 Symfony2 项目:

#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

现在我想对其他数据库进行简单查询(如例行调用)。

我应该在配置文件中定义另一个 dbal 吗?
如果是,如何配置它同时保持项目的默认连接?
我必须为每个连接配置一个 orm 吗?

最佳答案

需要再增加一层配置,同样使用multiple entity managers因为 Doctrine 每个数据库连接使用 1 个实体管理器..你的配置可能看起来像这样:

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% # <

然后你定义你的多个实体管理器

doctrine:
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AcmeDemoBundle: ~
AcmeStoreBundle: ~
another:
connection: another
mappings:
AcmeCustomerBundle: ~

然后在您的操作中,您可以使用以下内容来获取正确的实体管理器:

$em = $this->get('doctrine')->getEntityManager('default');
$em = $this->get('doctrine')->getEntityManager('another');

取决于您需要的实体管理器

关于php - Doctrine 2 - 多数据库配置和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com