C'est difficile à expliquer mais je vais faire de mon mieux,

I want to filter an Association and I use EntityFilter for that, this association can have multiple value :
Je veux filtrer une association et j'utilise l'EntityFilter qu'EasyAdmin propose, comme on peut le voir, j'attribue plusieurs valeurs :
Nom : Capture d’écran 2022-07-20 à 19.36.43.png
Affichages : 401
Taille : 79,2 Ko

Pour mon exemple, je recherche une personne qui est `illustrateur/dessinateur` et `Animateur/intervenant`.

Dans mon Index(Crud) j'ai 3 personnes, une qui n'a pas d'activité, une qui en a les 2 (illustrateur/dessinateur et Animateur/intervenant) et la dernière qui n'en a qu'une (Animateur/intervenant)
Nom : Capture d’écran 2022-07-20 à 19.40.24.png
Affichages : 363
Taille : 91,3 Ko

Je filtre avec les 2 activités et 2 personnes sont retournées alors que je souhaite seulement avoir Farrah car c'est la seule qui a les 2 activitées.
[![enter image description here][3]][3]

J'ai donc regardé le code que propose EntityFilter et j'ai vu qu'il utilise la class Orx

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
 
```php
if ($entityDto->isToManyAssociation($property)) {
            // the 'ea_' prefix is needed to avoid errors when using reserved words as assocAlias ('order', 'group', etc.)
            // see <a href="https://github.com/EasyCorp/EasyAdminBundle/pull/4344" target="_blank">https://github.com/EasyCorp/EasyAdminBundle/pull/4344</a>
            $assocAlias = 'ea_'.$filterDataDto->getParameterName();
            $queryBuilder->leftJoin(sprintf('%s.%s', $alias, $property), $assocAlias);
 
            if (0 === \count($value)) {
                $queryBuilder->andWhere(sprintf('%s %s', $assocAlias, $comparison));
            } else {
                $orX = new Orx();
                $orX->add(sprintf('%s %s (:%s)', $assocAlias, $comparison, $parameterName));
                if ('NOT IN' === $comparison) {
                    $orX->add(sprintf('%s IS NULL', $assocAlias));
                }
                $queryBuilder->andWhere($orX)
                    ->setParameter($parameterName, $this->processParameterValue($queryBuilder, $value));
            }
```
Then I overided this filter and replaced `Orx` by `AndX` but still the same result
J'ai overidé ce filtre et remplacé Orx par AndX mais j'ai obtenu le même résultat

Ensuite j'ai testé avec un IN en pensant que ça résoudrait mon problème

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
```php
foreach ($value as $item) {
    if ($comparison === 'NOT IN') {
        $queryBuilder->andWhere($queryBuilder->expr()->notIn($assocAlias, [$item->getId()]));
    } else {
        $queryBuilder->andWhere($queryBuilder->expr()->in($assocAlias, [$item->getId()]));
    } 
}
```
Mais en fait IN agit comme un OR et j'aimerais qu'il soit plus strict et agisse comme un AND. Y a-t-il un moyen de le faire se comporter ainsi pour résoudre ce problème de filtre ?