Allowing Filters
Allowing Filters
Introduction
Basics
- Installation
- Make Model Filterable
- Filtering Models
- Allowing Filters
- Relationships
Available Filters
- Full Filter List
- Field Filters
- Relation Filters
- Morph Relation Filters
- Condition Filters
Digging Deeper
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();
On this page