Bonjour,

Après un bon moment de recherche, je poste ici ma problématique en espérant que vous pourrez me dire comment faire plus simplement.

J'au deux tables qui sont lié et je me sert d'une des tables pour en faire un menu déroulant.

Soit le Builder donne ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 ->add('id_type_contrat','entity', 
                    array('class' => 'GestaPontauryBundle:TypeContrat','property' => 't_type_contrat'))
ce qui génère exactement ce que je veux en terme de html

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<p>
<label for="gesta_contratbundle_contrattype_id_type_contrat" class=" required">Contrat</label>
<select id="gesta_contratbundle_contrattype_id_type_contrat" name="gesta_contratbundle_contrattype[id_type_contrat]" required="required">
<option value="1">Eft</option>
<option value="3">Stage</option>
<option value="174">F70Bis</option>
</select>
</p>

le souci est qu'au moment de valider via les outils Doctrine
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$em = $this->getDoctrine()->getEntityManager();
                $em->persist($formData);
                $em->flush();
j'obtient l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Warning: spl_object_hash() expects parameter 1 to be object, integer given in /Users/gg/Sites/gesta/vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php line 1095
Et a partir de là on peut dire ce qu'on veut, mais Symfony n'est pas très clair dans ses messages d'erreurs

Le souci est que Doctrine me renvoir la ligne complète de la table qui me sert pour mon menu, plutôt que simplement la value.

Du coup il faut pouvoir extraire cette données a travers les getters et setters de la table qui sert au menu au travers du getter de la premiere table (pas sur d'être clair là).

En gros pour moi avoir le resultat du value <option>, je dois le récupérer comme ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$formData->getIdContrat()->gettNom()
Du coup je fais ceci pour valider

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$formData->setIdContrat($formData->getIdContrat()->getTNom());
Voyez-vous plus simple ?

Merci.