danilpetrenko / eloquent-query-filter
Package for simple query filtration
Installs: 15
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:stable
Requires
- php: >=8.0
- illuminate/collections: v10.*
- illuminate/database: v10.*
- illuminate/support: v10.*
README
Package is developed for quick and easy managing filtering in your application.
Usage:
Go to your model and add use HasFilter;
trait, so you can inject filtration logic anywhere.
Via laravel scopes this trait adds simple methods to inject your filters as a
- One filter
User::useFilter(ActiveFilter::class)->first();
- Array of filters
User::useFilters([ActiveFilter::class, IsAdminFilter::class])->first();
- FiltersRepository
User::useFiltersRepository(UserFiltersRepository::class)->first();
Each of your filters have to extend Filter class and implement run() method.
run() method should always return Builder instance and can use $model to check model's columns for example.
public function run(Builder $query, Model $model): Builder
{
return $query->where('active', true);
}
You can also use $this->parameters field to conditionally filter you model.
FiltersRepository
You can create repository of filters which extends FiltersRepository class and implements getFilters() method.
As a return you should provide a list of filter classes.