handle string filter (?filter=)

This commit is contained in:
Andrei V. Goryunov 2022-09-19 12:31:11 +03:00
parent 5f7c0d2da5
commit de4dacd1da
2 changed files with 6 additions and 5 deletions

View File

@ -62,10 +62,6 @@ class Index
}
if ($filter = $context->getRequest()->getQueryParams()['filter'] ?? null) {
if (! is_array($filter)) {
throw (new BadRequestException('filter must be an array'))->setSourceParameter('filter');
}
$resourceType->applyFilters($query, $filter, $context);
}

View File

@ -110,12 +110,17 @@ final class ResourceType
/**
* Apply the resource type's filters to a query.
*/
public function applyFilters($query, array $filters, Context $context): void
public function applyFilters($query, $filters, Context $context): void
{
$schema = $this->getSchema();
$customFilters = $schema->getFilters();
$fields = $schema->getFields();
if (is_string($filters)) {
$this->adapter->filterByExpression($query, $filters);
return;
}
foreach ($filters as $name => $value) {
if ($name === 'id') {
$this->adapter->filterByIds($query, explode(',', $value));