Bonjour,
Je dispose de deux entités reliées par une relation unidirectionnelle de type ManyToOne :
A la création d'un nouvel objet A, je reçois d'un formulaire l'identifiant de l'entité B reliée. Ainsi, j'aimerais pouvoir faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class A { /** * @ManyToOne(targetEntity="B") */ protected $b; } class B { }
ou setB est définie ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $a = new A(); $a->setB($clePrimaireDeB); $em->persist($a); $em->flush(),
Toutefois, cela ne fonctionne pas, j'obtiens une erreur me disant que l'entité B est inconnue et qu'il faut que je la persiste avant. J'ai donc deux solutions : ou alors je créé une entité B from scratch et je fais un persist, ou alors je suis obligé de modifier ma fonction setB de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function setB($b) { $this->b = $b; }
D'une part cela alourdit le code et, d'autre part, c'est une requête pour rien étant donné que je suis SÛR qu'il existe un enreigstrment dans la table avec l'identifiant que je récupère de mon formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public function setB($b) { if (is_numeric($b)) // $b est un identifiant $b = $em->find('B', $b); $this->b = $b; }
Y a t-il donc un moyen de définir une relation directement avec l'identifiant de l'objet plutôt que l'objet lui même ?
Merci
Partager