Convertir un array en résultat compatible query_builder
Bonjour,
Dans un formulaire, je fais appel à une méthode d'un repository de cette manière :
Code:
1 2 3 4 5 6 7
| ->add('localite','entity', array('class'=>'Hotels\GestionAnnoncesBundle\Entity\Localite',
'query_builder' => function(LocaliteRepository $er) use ($region)
{
return $er->getLocalitesByElem($region->getId(), 'region');
},
'required' => false))
; |
Voici la méthode que j'ai écrite pour une question de ré-utilisabilité :
Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public function getLocalitesByElem($idElemInit, $typeElemInit)
{
$em = $this->getEntityManager();
switch($typeElemInit)
{
case 'commune':
$obj = $em->getRepository('HotelsGestionAnnoncesBundle:Commune')->find($idElemInit);
break;
case 'province':
$obj = $em->getRepository('HotelsGestionAnnoncesBundle:Province')->find($idElemInit);
break;
case 'departement':
$obj = $em->getRepository('HotelsGestionAnnoncesBundle:Departement')->find($idElemInit);
break;
case 'region':
$obj = $em->getRepository('HotelsGestionAnnoncesBundle:Region')->find($idElemInit);
break;
default:
$obj = $em->getRepository('HotelsGestionAnnoncesBundle:Pays')->find($idElemInit);
break;
}
if($typeElemInit == 'commune')
{
$localites = $obj->getLocalites();
}
else
{
$communes = $obj->getCommunes();
$localites = array();
foreach ($communes as $com)
{
foreach ($com->getLocalites() as $locByCom)
{
$localites[] = $locByCom;
}
}
}
return $localites;
} |
Cependant, j'obtiens cette erreur :
Citation:
Expected argument of type "Doctrine\ORM\QueryBuilder", "array" given
Comment pourrais-je exploiter mon array retourné dans mon formulaire pour assigner le tableau d'objets au champ 'localite'?
Merci d'avance pour votre aide.