Hello,

Je rencontre actuellement un problème avec un many to many dans la création d'un formulaire avec Symfony.

Voici mes deux entités :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class Association extends EntityRepository {
 
    /**
     * Owning Side
     * 
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", cascade={"persist"}, inversedBy="associations")
     * @ORM\JoinTable(name="association_user",
     *      joinColumns={@ORM\JoinColumn(name="association_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
     * )
     */
    private $users;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
/**
 * @ORM\Entity
 */
class User {
 
    /**
     * Inverse Side
     * 
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Association", mappedBy="users")
     */
    private $associations;
Maintenant, j'aimerais afficher dans un select d'un formulaire que les associations pour un utilisateur spécifique. Dans un autre controller, je fais déjà ça et si je regarde la requête que l'ORM me fait cela donne ceci :

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
SELECT 
  t0.id AS id1, 
  t0.date AS date2, 
  t0.title AS title3, 
  t0.description AS description4, 
  t0.author AS author5, 
  t0.published AS published6, 
  t0.updated_at AS updated_at7, 
  t0.president AS president8, 
  t0.phone AS phone9, 
  t0.email AS email10, 
  t0.website AS website11, 
  t0.image_id AS image_id12 
FROM 
  association t0 
  INNER JOIN association_user ON t0.id = association_user.association_id 
WHERE 
  association_user.user_id = ?
Pour le moment, j'en suis à quelque chose dans ce style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
  $form = $this->get('form.factory')->createBuilder('form', $member)
                ->add('association', 'entity', array(
                    'class' => 'AppBundle:Association',
                    'query_builder' => function(EntityRepository $er) {
                        return $er->createQueryBuilder('a,u')
                                ->from('AppBundle:User', 'u')
                                ->innerJoin('u.associations', 'ua')
                                ->where('ua.id = :id')->setParameter('id', $this->getUser()->getId());
                    },
                    'property' => 'title',
                ))
Mais cela me donne une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[Semantical Error] line 0, col 47 near 'u, AppBundle:User': Error: Class 'u' is not defined.
Quelqu'un pourrait-il me donner un coup de main ?

Merci