wtolk / eloquent-query-filter
A simple PHP Eloquent extension for universal filters
Installs: 305
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/wtolk/eloquent-query-filter
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]">