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>