How to manage Doctrine queries with multiple db schemas

doctrine-orm, doctrine-query, php, symfony

Solution

Problem solved ! It had absolutely nothing to do with databases schema nor annotations.

In entity A, one of my personnal setter was forcing type in parameter :

public function setB(B $objB) { //... }

... and I forgot to use B's FQCN ! That's why it was using A's one.

Next time I won't declare FQCN in the annotation to oblige me to use it at the beginning of my class ! :)

Problem

I have an entity A with a relation ManyToOne with B but A and B doesn't belong to the same DB schema. Entity 'A' belongs to MyBundle bundle, and entity 'B' belongs to MyOtherBundle bundle. The official documentation explain how to work with different connections : multiple schemas = multiple entity manager. But in my case I would like to join both entities. By doing : ``` $this->objEm->getRepository('MyBundle:MyEntity')->find($id); ``` or ``` $this->objEm->getRepository('MyBundle:MyEntity')->getMyResult($id); ``` I only call one of my repository, and I guess he's not able to get the other because in my config.yml I can chose only one connection. ``` 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: ~ ``` Result : Whoops, looks like something went wrong. 1/1ReflectionException: Class FQCN\Of\MyBundle\Entity\B does not exist ... "I know it doesn't exist dude, I want you to look at the good place now : like at FQCN\Of\MyOtherBundle\Entity\B" How can I force the path to my entity 'B'?

Original source