Bonjour,

Je bloque sur une problématique lié au fait que j'ai 2 connexions emA et emB pointant sur 2 BD différentes. Comme doctrine ne gère pas les jointures inter base (c'est ce que j'ai compris), j'ai un problème de "passerelle" entre les 2 BD que je dois gérer "à la main".

Je possede une entité A sur une connexion emA et une entite B sur une autre emB.
Il y a une entity d'association entre les 2 appelé A_B . Cette entity est définie sur la connexion emA.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * @ORM\Table(name="a_b")
 * @ORM\Entity
 * @ORM\Entity(repositoryClass="MaCompny\monBundle\Entity\A_BRepository")
 */
class A_B
{
    /**
     * @var \A
     *
     * @ORM\ManyToOne(targetEntity="A", inversedBy="a")
     * @ORM\JoinColumn(name="a_id", referencedColumnName="id")
     */
    private $a;
 
    /**
     * @var integer
     *
     * @ORM\Column(name="b_id", type="bigint", nullable=false)
     */
    private $bId;
Je ne peux pas faire de jointure vers la table B avec les annotation @ORM de doctine car B est sur une autre connexion que l'entity A_B. C'est pourquoi je la gère comme un integer et non comme entity.

Pour les besoins de mon formulaire qui affiche une collection de B sur le formulaire de A, j'ai besoin de personnaliser la méthode __toString . Il faudrait que j'accède à l'entity B.

Car aujourd'hui je ne peux affiché que la clé B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public function __toString()
{
    return  $this->getBId().'->'.$this->getA()->getId();
}
Alors que j'aimerai affiché des inforamtion de l'entity B.... avoir quelque chose comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public function __toString()
{
    $emB=container->getManager('emB');
    $b_tostring=emB->getRepository(monBundle:B')->find($id);
    return  $this->getB()->getName().'->'.$this->getA()->getId();
}
Ma solution ne marche pas....car je n'arrive pas à accéder au container.

Comment accéder au repository de B (ou au container ou à un autre service) sur la méthode __toString() de mon entity A_B ?

Merci pour vos suggestions.