elefilter / elefilter
A filter package for laravel elequent models
Fund package maintenance!
Rottmayer89
Requires
- php: ^8.2.12
- illuminate/database: *
- illuminate/support: ^12.21
Requires (Dev)
- larastan/larastan: ^3.6
- laravel/pint: ^1.22.1
- orchestra/testbench: ^10.4
- peckphp/peck: ^0.1.3
- pestphp/pest: ^3.7
- pestphp/pest-plugin-type-coverage: ^3.7
- phpstan/phpstan: ^2.1.16
- rector/rector: ^2.0.16
- symfony/var-dumper: ^7.2.6
This package is auto-updated.
Last update: 2025-08-29 06:37:53 UTC
README
EleFilter
Easy and Clean Filter Package For Laravel Applications
Elefilter is a Laravel package that helps you easily create and organize filter classes for your Eloquent models.
It provides a simple Artisan command (make:filter
) and a clean structure for building reusable filters.
👉 Full documentation available at: here
Requirements
- PHP 8.2+
Installation
Install the package via Composer:
composer require elefilter/elefilter
If you get stability error, use this command instead.(package is in beta version)
composer require elefilter/elefilter:"1.0.0-beta"
Make model filterable
Add Filterable Trait to the model
use EleFilter\Traits\Filterable; class User extends Model { use HasFactory, Filterable; }
Create a class filter
With command make:filter, you can create a filter class for your model
php artisan make:filter User/Status --column=email_verified_at
Define query
Inside filter class you can define the query conditions inside methods
namespace App\Filters\User; use EleFilter\Database\ModelFilter; class StatusFilter extends ModelFilter { protected string $column = "email_verified_at"; public function verified(): void { $this->notNull(); } public function unverified(): void { $this->null(); } }
Use filter method
When you want to get results, you can apply the filters like this:
$verifiedUsers = User::filter([ 'status' => 'verified' ])->get(); $unverifiedUsers = User::filter([ 'status' => 'unverified' ])->get();
Or use macro methods:
$verifiedUsers = User::verified()->get(); $unverifiedUsers = User::unverified()->get();
Filters with arguments
For filter which needs argument like search filter, you can use default apply method inside class filters :
namespace App\Filters\User; use EleFilter\Database\ModelFilter; class SearchFilter extends ModelFilter { protected string $column = "email"; public function apply(mixed $param): void { $this->like($param); } }
And call it like this:
$users = User::filter(['search' => 'test'])->get();
Or use macro methods :
$users = User::search('test')->get();
In the front end side in your filter form, assign the class filter names (without suffix Filter) as name attribute for the inputs and values can be method names or the given parameter.An example is like this:
<form method="get"> <label for="asc" >oldest</label> <input type="radio" name="sort" id="asc" value="oldest" /> <label for="desc" >newest</label> <input type="radio" name="sort" id="desc" value="newest" /> <input type="text" name="search" /> <select name="status"> <option value="pending">pending</option> <option value="approved">approved</option> <option value="rejected">rejected</option> </select> </form>
For detailed documentaion, more examples, possible conflics, limitation and testing, please refer to website.