Many to Many avec table de jointure et createBuilder
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:
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:
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:
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:
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:
[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