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 :
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;
    }  
 
    ...
}
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.

Jusqu'à maintenant j'effectuais la commande ci-après dans mon controlleur sous Symfony.

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();
 
}
l'exécution du code nécessite 2 requêtes :
  1. une première dans la table lien
  2. 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