Allowing Filters
Allowing Filters
Overview
By default, all filters are disallowed.
You can define allowed filters in two ways:
Define On Model
use IndexZer0\EloquentFiltering\Contracts\IsFilterable;
use IndexZer0\EloquentFiltering\Filter\Filterable\Filter;
use IndexZer0\EloquentFiltering\Filter\Traits\Filterable;
use IndexZer0\EloquentFiltering\Filter\Contracts\AllowedFilterList;
use IndexZer0\EloquentFiltering\Filter\FilterType;
class Product extends Model implements IsFilterable
{
use Filterable;
public function allowedFilters(): AllowedFilterList
{
return Filter::only(
Filter::field('name', [FilterType::EQUAL, FilterType::LIKE]),
Filter::relation(
'manufacturer',
[FilterType::HAS, FilterType::DOESNT_HAS],
Filter::only(
Filter::field('name', [FilterType::LIKE])
)
)
);
}
public function manufacturer(): BelongsTo
{
return $this->belongsTo(Manufacturer::class);
}
}
Pass to ::filter()
Passing in an AllowedFilterList
to ::filter()
method takes priority over allowedFilters()
on the model.
Product::filter(
$filters,
Filter::only(
Filter::field('name', [FilterType::EQUAL, FilterType::LIKE]),
Filter::relation(
'manufacturer',
[FilterType::HAS, FilterType::DOESNT_HAS],
Filter::only(
Filter::field('name', [FilterType::LIKE])
)
)
)
)->get();