svil4ok/laravel-query-filters
Composer 安装命令:
composer require svil4ok/laravel-query-filters
包简介
README 文档
README
About
Imagine if we have to filter all the users stored in our database by some criteria - name, email, location, company, etc. For example:
/users?country=Bulgaria&city=Sofia&name=Svilen
To filter by all those parameters we would need to do something like:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\User; class UserController extends Controller { public function index(Request $request) { $users = (new User)->newQuery(); if ($request->has('country')) { $users->where('country', '=', $request->get('country')); } if ($request->has('city')) { $users->where('city', '=', $request->get('city')); } if ($request->has('name')) { $users->where('name', 'LIKE', '%' . $request->get('name') . '%'); } // ... // other filters // ... return $users->get(); } }
By using this package you can easily create filters based on the requested query string and refactor the controller to something like:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\User; class UserController extends Controller { public function index(UserFilters $filters) { return User::filter($filters)->get(); } }
Usage
- Add
Filterabletrait to your model to allow the usage ofModel::filter().
<?php namespace App; use Illuminate\Database\Eloquent\Model; use SGP\QueryFilters\Filterable; class User extends Model { use Filterable; }
- Generate your model filters using the following boilerplate:
<?php namespace App; use SGP\QueryFilters\QueryFilters; class UserFilters extends QueryFilters { public function filterByOption($value) { return $this->builder->where('column', 'operator', $value); } }
- Use your filter:
<?php namespace App\Http\Controllers; use App\User; use App\UserFilters; class MyController extends Controller { public function index(UserFilters $filters) { return User::filter($filters)->get(); } }
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-11-14