Définir une relation sans requête supplémentaire ?
Bonjour,
Je dispose de deux entités reliées par une relation unidirectionnelle de type ManyToOne :
Code:
1 2 3 4 5 6 7 8 9 10 11
| class A
{
/**
* @ManyToOne(targetEntity="B")
*/
protected $b;
}
class B
{
} |
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:
1 2 3 4
| $a = new A();
$a->setB($clePrimaireDeB);
$em->persist($a);
$em->flush(), |
ou setB est définie ainsi :
Code:
1 2 3 4
| public function setB($b)
{
$this->b = $b;
} |
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:
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;
} |
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.
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