handle string filter (?filter=)
This commit is contained in:
parent
5f7c0d2da5
commit
de4dacd1da
|
|
@ -62,10 +62,6 @@ class Index
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($filter = $context->getRequest()->getQueryParams()['filter'] ?? null) {
|
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);
|
$resourceType->applyFilters($query, $filter, $context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -110,12 +110,17 @@ final class ResourceType
|
||||||
/**
|
/**
|
||||||
* Apply the resource type's filters to a query.
|
* 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();
|
$schema = $this->getSchema();
|
||||||
$customFilters = $schema->getFilters();
|
$customFilters = $schema->getFilters();
|
||||||
$fields = $schema->getFields();
|
$fields = $schema->getFields();
|
||||||
|
|
||||||
|
if (is_string($filters)) {
|
||||||
|
$this->adapter->filterByExpression($query, $filters);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($filters as $name => $value) {
|
foreach ($filters as $name => $value) {
|
||||||
if ($name === 'id') {
|
if ($name === 'id') {
|
||||||
$this->adapter->filterByIds($query, explode(',', $value));
|
$this->adapter->filterByIds($query, explode(',', $value));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue