andrewdyer / filtering
1.0.1
2023-01-07 21:25 UTC
Requires
- php: ^7.4|^8.0
- illuminate/database: ^8.83
Requires (Dev)
- phpunit/phpunit: ^9.5
README
这是一个用于通过查询字符串过滤 Laravel 数据库结果的超级整洁且易于扩展的解决方案。
许可证
MIT 许可证下授权。完全免费用于私人或商业项目。
安装
composer require andrewdyer/filtering
基本用法
$courses = Course::filter($request->getQueryParams())->get();
创建过滤器
namespace App\Filters; use Anddye\Filtering\Filter; use Illuminate\Database\Eloquent\Builder; class AccessFilter extends Filter { public function filter(Builder $builder, $value): Builder { return $builder->where('free', $value); } }
创建过滤器
namespace App\Filterers; use Anddye\Filtering\Filterer; use App\Filters\AccessFilter; class CourseFilterer extends Filterer { protected array $filters = [ 'access' => AccessFilter::class, ]; }
创建过滤作用域
namespace App\Models; use App\Filterers\CourseFilterer; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; class Course extends Model { public function scopeFilter(Builder $builder, array $queryParams): Builder { return (new CourseFilterer())->filter($builder, $queryParams); } }
支持
如果你在使用这个包,我很乐意听听你的想法!请随时在 Twitter 上联系我。
发现了错误?请使用 问题跟踪器 报告它,或者更好的是,fork 存储库并提交一个 pull request。