request = $request ?? Request::createFromGlobals(); } protected function getColumn(): string { return $this->tableAlias . '.' . $this->field; } protected function getHttpValue(): mixed { $filter = $this ->request ->query ->getIterator()[static::REQUEST_FILTER_KEY] ?? null; if ($filter === null) { return null; } return $filter[$this->field] ?? null; } public function getParameterKey(): string { return str_replace('.', '_', $this->getColumn()); } abstract public function addToQuery(QueryBuilder $queryBuilder): QueryBuilder; }