Bonjour,

Entre deux entités, Departement et Pays, j'ai une relation ManyToOne bidirectionnelle. Pour effectuer cela, j'ai utilisé les annotations :

Departement.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
...
 
    /**
     * @ORM\ManyToOne(targetEntity="Hotels\GestionAnnoncesBundle\Entity\Pays", inversedBy="departements")
     * @ORM\JoinColumn(name="pays_id", referencedColumnName="id")
     * @Assert\NotNull()
     */
    private $pays;
 
...
Pays.php
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
 
...
 
     /**
     * @ORM\OneToMany(targetEntity="Pays", mappedBy="pays")
     */
    protected $departements;
 
...
 
    public function __construct()
    {
        $this->departements = new ArrayCollection();
    }
 
...
 
    /**
     * Get departements
     *
     * @return entity Departement 
     */
    public function getDepartements()
    {
        return $this->departements;
    }
 
...
Dans un script Ajax, je tente de mettre à jour la liste des départements en fonction du Pays sélectionné. Pour cela j'ai la fonction suivante dans mon controller :

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
    public function departementsByPaysAction()
     {
      $request = $this->container->get('request');
 
      if($request->isXmlHttpRequest())
      {
          $idPays = $request->request->get('idPays');
 
          $em = $this->container->get('doctrine')->getEntityManager();
 
          $pays = $em->getRepository('HotelsGestionAnnoncesBundle:Pays')->find($idPays);
          $departements = $pays->getDepartements();
 
          return new \Symfony\Component\HttpFoundation\Response('5');         
      }
     }
Je voudrais parcourir $departements afin de construire une chaîne de type "idDepartement_nomDepartement+idDepartement_nomDepartement+...' à la place de '5' pour pouvoir l'utiliser et reconstruire mon select dans mon javascript. Je ne sais pas comment parcourir cet arrayCollection pour récupérer les informations voulues.

Merci d'avance pour votre aide.