Bonsoir,
Ma question est un peu contraire au concept d'abstraction de la base de données de Doctrine ...
j'ai une première entité Lien liée à une autre entité Noeud par une relation OneToOne.
Je voudrais récupérer en une requête l'identifiant de mon instance de Noeud à partir d'une instance de Lien :
la clé primaire d'un enregistrement d'une table noeud liée à l'entité Noeud, est stockée en base de donnée dans une colonne "noeud_id" dans la table lien liée à la classe Lien.
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
22
23
24
25
26
27
28
29
30
31
32 class Lien { /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue */ protected $id; /** @ORM\OneToOne(targetEntity="Noeud") */ protected $noeud; public function getId() { return $this->id; } public function getNoeud() { return $this->noeud; } ... } class Noeud { /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue */ protected $id; public function getId() { return $this->id; } ... }
Jusqu'à maintenant j'effectuais la commande ci-après dans mon controlleur sous Symfony.
l'exécution du code nécessite 2 requêtes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function afficheLienAction($id) { $lien = $this->getDoctrine()->getEntityManager()->find('MonBundle:Lien', $id); $noeud = $lien->getNoeud(); $idNoeud = $noeud->getId(); }
- une première dans la table lien
- une seconde dans la table noeud
la 2e est inutile pour accéder à l'identifiant de mon instance de Noeud.
y a-t-il possibilité de récupérer cet identifiant en une seule requête ?
l'entité proxy de Noeud possède la fameuse variable _identifier mais elle est privée j'ai envie de lui rajouter une fonction getter...
Merci d'avance pour vos réponses !!
Bonne soirée
Partager