protected function addFilter(QueryBuilder $queryBuilder, array $filter, array $filterOperators)
{
$i = 0;
$manyFields = [];
foreach ($filter as $field => $value) {
if ($this->definition->getType($field) === 'many') {
$manyFields[] = $field;
continue;
}
if ($value === null) {
$queryBuilder->andWhere('`' . $field . '` IS NULL');
} else {
$operator = array_key_exists($field, $filterOperators) ? $filterOperators[$field] : '=';
$queryBuilder->andWhere('`' . $field . '` ' . $operator . ' ?')->setParameter($i, $value, \PDO::PARAM_STR);
}
$i++;
}
$idsToInclude = $this->getManyIds($manyFields, $filter);
if (!empty($idsToInclude)) {
$queryBuilder->andWhere('id IN (?)')->setParameter($i, $idsToInclude, Connection::PARAM_STR_ARRAY);
}
}