laraditz/model-filter
最新稳定版本:1.0.5
Composer 安装命令:
composer require laraditz/model-filter
包简介
A simple eloquent model filter.
README 文档
README
A simple eloquent model filter for Laravel and Lumen.
Installation
Via Composer
$ composer require laraditz/model-filter
Configuration
Add filterable trait to your model as below snippet:
use Laraditz\ModelFilter\Filterable; class User extends Model implements AuthenticatableContract, AuthorizableContract { use Filterable; ... }
Create filter class under the App/Filters folder with <model_name>Filter format. For example for User model, you will need to create UserFilter class.
Below snippet shows how the UserFilter could look like:
namespace App\Filters; use Laraditz\ModelFilter\Filter; use Illuminate\Database\Eloquent\Builder; class UserFilter extends Filter { public function name(string $value) { $this->where('name', 'LIKE', $value); } public function email(string $value) { $this->where('email', 'LIKE', "%$value%"); } // Filter relationship public function rank($value) { $this->whereHas('rank', function (Builder $query) use ($value) { $query->where('level', 'like', $value); }); } }
If you want to have more control on which attributes can be filtered, you can add filterable array to you model:
protected $filterable = [ 'name', 'email' ];
Usage
In your controller, call filter method and pass the input data to use the filter that you have created.
$users = User::filter($request->all())->get();
Your request query strings could look like this.
/users?name=farhan&rank=novice
You could also pass sort param to apply sorting for your result.
/users?name=farhan&rank=novice&sort=name,level
Sort desc by adding - symbol in front of the field name
/users?name=farhan&rank=novice&sort=-name,level
That's it!
Credits
License
MIT. Please see the license file for more information.
统计信息
- 总下载量: 353
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-01