croudtech/request-filters

Laravel 请求过滤助手。

1.0.0 2021-05-10 20:39 UTC

This package is auto-updated.

Last update: 2024-09-11 03:59:20 UTC


README

此包用于允许使用简单的请求参数快速动态地过滤基于 eloquent 的模型。非常适合后端 API!

配置

要开始在 Laravel 中使用此包,您首先需要创建一个宏,如下所示,用于定义 request()->filter() 方法:

use CroudTech\RequestFilters\RequestFilters;

request()->macro('filters', function() {
    return RequestFilters::getFilterCollection(
        // Use the 'filters' query param.
        request()->query('filters')
    );
});

注意:对于 Lumen 应用程序,您需要一个辅助文件来定义 request() 方法,因为默认情况下不可用。

现在,在您的任何存储库中,您可以根据 filters 查询参数中提供的策略和参数信息开始根据策略过滤模型的结果。

public function getFood()
{
    return request()->filters()->apply(
        DB::table('food')
    );
}

现在,我们可以提供一个包含我们希望如何过滤食物的 JSON 策略的 base_64 编码字符串。例如:

[
    {
        "strategy": "where",
        "parameters": [
            "calories",
            ">",
            100
        ]
    },
    {
        "strategy": "whereIn",
        "parameters": [
            "food_type",
            "('fried', 'baked')"
        ]
    }
]