Вы в цикле для разных фильтров добавляет в один объект QueryBuilder параметры с одним ключом
values
, потом при сборке запроса Doctrine достает первый найденный Parameter с ключом
values
(а их таких несколько, но ей достаточно первого).
Код Доктрины:
То есть для цвета, года, уровня — всегда достается первый параметр с ключом
values
Предлагаю подставлять вместо этого слова разный алиас, например key:
[$normalizedKey, $key] = $this->getKeys($qb);
$qb
->andWhere(sprintf('%s IN (:%s)', $normalizedKey, $key))
->setParameter($key, $this->getValue());