gpt4 book ai didi

php - 如何使用多个数据库模式管理 Doctrine 查询

转载 作者:可可西里 更新时间:2023-11-01 12:55:48 24 4
gpt4 key购买 nike

我有一个实体 A 与 B 有 ManyToOne 关系,但 A 和 B 不属于同一个数据库模式。

实体“A”属于 MyBundle 包,实体“B”属于 MyOtherBundle 包。

官方文档解释了如何使用不同的连接:多个模式 = 多个实体管理器。但就我而言,我想加入这两个实体。

通过做:

$this->objEm->getRepository('MyBundle:MyEntity')->find($id);

$this->objEm->getRepository('MyBundle:MyEntity')->getMyResult($id);

我只调用了我的存储库之一,我猜他无法获得另一个,因为在我的 config.yml 中我只能选择一个连接。

doctrine:
dbal:
connections:
connection1:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_schema1_user%"
password: "%database_schema1_password%"
service: "%database_service%"
charset: "Windows-1252"
connection2:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_schema2_user%"
password: "%database_schema2_password%"
service: "%database_service%"
charset: "Windows-1252"

orm:
entity_managers:
em1:
connection: connection1
mappings:
MyBundle: ~
MyOtherBundle: ~
em2:
connection: connection2
mappings:
MyOtherBundle: ~

结果:糟糕,看起来出了点问题。

1/1ReflectionException: 类 FQCN\Of\MyBundle\Entity\B 不存在 ...

“伙计,我知道它不存在,我想让你现在看看好地方:比如 FQCN\Of\MyOtherBundle\Entity\B”

我怎样才能强制使用我的实体“B”的路径?

最佳答案

如果您的模式在同一个数据库中,则只需将实体的表定义为

Bundle\Entity\Class:
type: entity
table: schema.class

(山药)

您不需要指定第二个连接。当模式被明确指示时,这些连接在原则 2 中完美地工作。

如果你的模式在不同的数据库中,你会遇到一些痛苦,因为每个连接都会查询两个数据库;对于多个记录连接,每个条目都将执行连接,这意味着您执行的查询数量与结果集中的对象数量成正比 (BAD)。

关于php - 如何使用多个数据库模式管理 Doctrine 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938008/

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