use*_*526 7 php doctrine-query symfony doctrine-orm
我有一个实体A,其关系是ManyToOne与B,但A和B不属于同一个DB模式.
实体"A"属于MyBundle包,实体"B"属于MyOtherBundle包.
官方文档说明了如何使用不同的连接:多个模式=多个实体管理器.但就我而言,我想加入两个实体.
通过做 :
$this->objEm->getRepository('MyBundle:MyEntity')->find($id);
Run Code Online (Sandbox Code Playgroud)
要么
$this->objEm->getRepository('MyBundle:MyEntity')->getMyResult($id);
Run Code Online (Sandbox Code Playgroud)
我只调用我的一个存储库,我猜他无法得到另一个,因为在我的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: ~
Run Code Online (Sandbox Code Playgroud)
结果:糟糕,看起来出了问题.
1/1ReflectionException:类FQCN\Of\MyBundle\Entity\B不存在...
"我知道它不存在,我希望你现在看看好地方:比如在FQCN\Of\MyOtherBundle\Entity\B"
如何强制实体'B'的路径?
问题解决了 !它与数据库模式或注释完全无关。
在实体 A 中,我的个人设置者之一强制输入参数:
public function setB(B $objB) { //... }
Run Code Online (Sandbox Code Playgroud)
...我忘了使用 B 的 FQCN !这就是为什么它使用A的原因。
下次我不会在注释中声明 FQCN 来迫使我在课程开始时使用它!:)