protected function addDimensionJoinConstraintsToQueryBuilder(QueryBuilder $queryBuilder, array $dimensions)
{
$count = 0;
foreach ($dimensions as $dimensionName => $dimensionValues) {
$dimensionAlias = 'd' . $count;
$queryBuilder->andWhere('EXISTS (SELECT ' . $dimensionAlias . ' FROM Neos\\ContentRepository\\Domain\\Model\\NodeDimension ' . $dimensionAlias . ' WHERE ' . $dimensionAlias . '.nodeData = n AND ' . $dimensionAlias . '.name = \'' . $dimensionName . '\' AND ' . $dimensionAlias . '.value IN (:' . $dimensionAlias . ')) ' . 'OR NOT EXISTS (SELECT ' . $dimensionAlias . '_c FROM Neos\\ContentRepository\\Domain\\Model\\NodeDimension ' . $dimensionAlias . '_c WHERE ' . $dimensionAlias . '_c.nodeData = n AND ' . $dimensionAlias . '_c.name = \'' . $dimensionName . '\')');
$queryBuilder->setParameter($dimensionAlias, $dimensionValues);
$count++;
}
}