wtolk / eloquent-query-filter
A simple PHP Eloquent extension for universal filters
1.10
2019-12-30 09:31 UTC
Requires
- php: >=5.6
- illuminate/database: >=5.3
README
A simple PHP Eloquent extension for universal filters.
Installation
$ composer require wtolk/eloquent-query-filter
{ "require": { "wtolk/eloquent-query-filter": "^1.0" } }
Usage
Our request must be like
/filter[column_name:operator]=something
Method supports Eloquent operators
Our case is filtering users by name, age and gender
Inclusion the trait to your model
<?php use Illuminate\Database\Eloquent\Model; use WTolk\Eloquent\Filter; class User extends Model { use Filter; }
View
<input type="text" name="filter[name:like]"> <input type="text" name="filter[age:>]"> <input type="text" name="filter[gender]">
Controller
$users=User::filter($request->input('filter'))->get();
Custom filter method
You can use your own filter methods. Create method in your Model You must return the object of QueryBuilder.
public function customFilterMethod($value, $builder) { $builder->/*any queryBuilderMethods*/; return $builder; }
<input type="text" name="filter[:customFilterMethod]">
Eloquent Query Builder methods support
You can use default Builder methods like limit, offset, etc.
<input type="text" name="filter[limit]"> <input type="text" name="filter[offset]">