buibr/eloquent-filter

本包的最新版本(v1.0)没有提供许可信息。

通过过滤查询字符串到eloquent查询进行搜索

v1.0 2024-09-14 05:05 UTC

This package is auto-updated.

Last update: 2024-09-14 05:10:07 UTC


README

Latest Stable Version Total Downloads License

eloquent-filter 是一个简单的包,可以根据请求查询参数使用预定义的方法过滤 Eloquent 查询。它允许您轻松地为 Laravel 应用程序构建复杂的查询过滤器。

安装

您可以通过 composer 安装此包

composer require buibr/eloquent-filter

使用

步骤 1:将 HasFilters 特性添加到您的模型

HasFilters 特性包含在任何您希望使用查询过滤器的 Eloquent 模型中。

use BI\EloquentFilter\HasFilters;

class YourModel extends Model
{
    use HasFilters;

    // Other model code...
}

步骤 2:创建一个过滤器类

创建一个新的过滤器类,该类继承自 QueryFilter。在这个类中,为每个要过滤的查询参数定义方法。每个方法都应该接受参数值并根据需要进行查询修改。

use BI\EloquentFilter\QueryFilter;

class YourModelFilter extends QueryFilter
{
    public function status($value)
    {
        return $this->builder->where('status', $value);
    }

    public function category($value)
    {
        return $this->builder->where('category_id', $value);
    }

    // Add more filter methods as needed...
}

步骤 3:在控制器中应用过滤器

在控制器中,使用 filter 范围对查询应用过滤器。将您的过滤器类的实例作为参数传递。

use App\Models\YourModel;
use App\Filters\YourModelFilter;

class YourController extends Controller
{
    public function index(YourModelFilter $filters)
    {
        $items = YourModel::filter($filters)->get();

        return response()->json($items);
    }
}

示例请求

现在您可以通过请求 URL 中的参数来过滤查询

GET /your-models?status=active&category=1

这将根据您在 YourModelFilter 类中定义的方法应用 statuscategory 过滤器。

自定义过滤器

要自定义过滤器的应用方式,只需在过滤器类中添加更多方法。每个方法对应一个查询参数,并可以根据需要修改 Eloquent 查询。

class YourModelFilter extends QueryFilter
{
    public function created_at($value)
    {
        return $this->builder->whereDate('created_at', $value);
    }

    public function sort($value)
    {
        return $this->builder->orderBy('created_at', $value);
    }
}

贡献

欢迎贡献!如果您遇到任何问题或对改进有建议,请提交问题或拉取请求。

许可

此包是开源软件,使用 MIT 许可证许可。MIT 许可证.