andrewdyer/filtering

1.0.1 2023-01-07 21:25 UTC

This package is auto-updated.

Last update: 2024-09-08 00:49:56 UTC


README

这是一个用于通过查询字符串过滤 Laravel 数据库结果的超级整洁且易于扩展的解决方案。

Total Downloads Latest Stable Version License

许可证

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。