sur mon entité, j'ai une collection de tableau d'utilisateurs dans mon formelype, je veux filtrer ces groupes dans laquelle l'utilisateur actuel est membre: p> Mon problème est évidemment sur cette ligne: p> $qb->where(':user IN (g.users)');
3 Réponses :
$qb->expr()->in('u.id', array(1, 2, 3))
Essayez ci-dessous le code Je l'ai essayé dans symfony 2.3 code> avec
doctrine2 code>. Vous pouvez utiliser la fonction
SELECT code> avec
CreateEquéryBuilder () CODE> pour obtenir des colonnes spécifiques. P> p>
J'ai fini par tourner un peu après une tentative sans succès de vos solutions. J'ai créé manuellement un tableau des identifiants que je voulais.
Il y a probablement une manière native de faire cela, semble être une jolie chose standard ... cela fonctionne cependant. P>
// 1. to inject user entity into this builder first make a construct function (remember to inject it from controller!) function __construct($user) { $this->user = $user; } /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $user = $this->user; // 2. instantiate the variable we created in our construct above //create group list array $groupList = $this->user->getACRGroups(); $gla = array(); foreach ($groupList as $g) { $gla[] = $g->getId(); }; $builder ->add('acr_group', EntityType::class, array( 'label' => 'ATS', 'class' => 'HazardlogBundle:ACRGroup', 'query_builder' => function (EntityRepository $er) use ($gla) { // 3. use the user variable in the querybilder $qb = $er->createQueryBuilder('g'); $qb->where('g.id IN (:gla)'); $qb->setParameters( array('gla' => $gla) ); $qb->orderBy('g.name', 'ASC'); return $qb; }, 'choice_label' => 'name' ))
Salut! Pouvez-vous essayer d'utiliser
dans code> expression comme ceci:
$ qb-> où ($ qb-> expr () -> in ('g.utilisateur, $ utilisateur)); Code>