CRUDlex\MySQLData::addFilter PHP Method

addFilter() protected method

Adds sorting parameters to the query.
protected addFilter ( Doctrine\DBAL\Query\QueryBuilder $queryBuilder, array $filter, array $filterOperators )
$queryBuilder Doctrine\DBAL\Query\QueryBuilder the query
$filter array the filter all resulting entities must fulfill, the keys as field names
$filterOperators array the operators of the filter like "=" defining the full condition of the field
    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);
        }
    }