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.
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.
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;
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
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 public function __toString() { return $this->getBId().'->'.$this->getA()->getId(); }
Ma solution ne marche pas....car je n'arrive pas à accéder au container.
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(); }
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.
Partager