masoudi / laravel-sieve
一个用于创建更优查询过滤器的 Laravel 包
0.3
2022-07-16 12:40 UTC
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5
README
Sieve 是一个 Laravel 框架包,用于创建查询过滤器更加容易和清晰。
如何使用
安装
使用 Composer 安装包
composer require masoudi/laravel-sieve
创建过滤器
通过运行以下 artisan 命令创建一个新的过滤器:
php artisan make:filter IndexPostsFilter
过滤器将被创建在 app/Http/Filters 路径下。
use Masoudi\Sieve\Filter; class IndexPostsFilter extends Filter { /** * Apply conditions on model * * @param \Illuminate\Http\Request $request * @param \Illuminate\Database\Query\Builder $builder * * @return \Illuminate\Database\Query\Builder */ function filter(Request $request, Builder $builder) { $builder = $builder->where("is_active", true) ->where('published', true) ->whereHas('comments', function($query){ $query->where('slug', '=', $request->slug); }); return $builder; } }
将 Filterable 特性添加到模型
在模型中使用 Filterable
特性;
use Masoudi\Sieve\Filterable; class Post extends Model { use Filterable; }
添加过滤器到模型
Post::filter(new IndexPostsFilter)->get();