stephenjude/simple-query-filter

此包已被弃用,不再维护。作者建议使用 spatie/laravel-query-builder 包。

轻松从 HTTP 请求中过滤 eloquent 模型查询

2.0.0 2022-03-04 22:03 UTC

This package is auto-updated.

Last update: 2022-08-22 15:38:28 UTC


README

此包已被弃用,不再维护。建议使用 spatie/laravel-query-builder 包。

Simple Query Filter

Latest Version on Packagist GitHub Tests Action Status Total Downloads

此包允许您根据 HTTP 请求过滤 eloquent 模型查询。

安装

您可以通过 composer 安装此包

composer require stephenjude/simple-query-filter

使用方法

WithQueryFilter 特性添加到您的可搜索模型

use Stephenjude\SimpleQueryFilter\WithQueryFilter;

class Post extends Model
{
    use WithQueryFilter;
}

根据请求过滤模型:/posts?column_name=search_string

filter() 方法用于过滤表中的行。结果将仅包括满足查询参数所有条件的行。

class PostController extends Controller
{
    public function index(Request $request)
    {
        // GET /posts?title=simple&slug=simple-query-filter
        $posts = Post::filter($request->query())->latest()->paginate();
    }
}

根据请求搜索模型:/posts?column_name=search_string

scout() 方法用于在模型上执行全文搜索。此方法的输出包括满足搜索条件的任何行。

class PostController extends Controller
{
    public function index(Request $request)
    {
        // GET /posts?title=simple&slug=simple-query-filter
        $posts = Post::scout($request->query())->latest()->paginate();
    }
}

自定义查询参数

您可以将一个包含列名和搜索字符串的键值对数组传递给 filter 方法。

    $queryParams = [
        'title' => 'Simple',
        'description' => 'Query Filter'
    ];

    $posts = Post::filter($queryParam)->latest()->paginate();
    $posts = Post::scout($queryParam)->latest()->paginate();

列未找到异常

此包提供的 eloquent 过滤作用域如果无法找到指定的任何列名,将抛出错误请求 HTTP 异常。

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请查阅我们的安全策略了解如何报告安全漏洞。

致谢

许可

MIT 许可证(MIT)。请参阅许可文件获取更多信息。