ralphmorris/laravel-query-filter

这是一个帮助根据请求参数创建查询过滤器的软件包

dev-master 2019-12-03 23:11 UTC

This package is auto-updated.

Last update: 2024-09-04 09:31:21 UTC


README

轻松添加基于请求参数的专用过滤器。最初来自Laracasts的一个优秀的教程。经过几次从项目到项目的复制,我现在将其放入一个小的软件包中,并添加了一个生成器以便于使用。

安装

您可以通过composer安装此软件包

composer require ralphmorris/laravel-query-filter

使用

要允许一个模型可过滤,首先将FilterableTrait添加到您的模型中。

use Illuminate\Database\Eloquent\Model;
use RalphMorris\LaravelQueryFilter\FilterableTrait;

class Post extends Model
{
    use FilterableTrait;
}

然后创建您的过滤器类,运行以下命令。

php artisan make:filter PostFilters

如果您使用的是默认命名空间/目录结构,这将把过滤器类放在App\Filters命名空间下。它应该看起来像这样。

namespace App\Filters;

use RalphMorris\LaravelQueryFilter\QueryFilter;

class PostFilters extends QueryFilter
{
    /**
     * Example
     * 
     * The request parameter key as the method name.
     * Passes the parameters value to the method 
     * so we can apply a filter to the query.
     * 
     * @param  mixed $param Value of the request parameter
     */
    public function example_request_param($param)
    {
        $this->builder->where('example_request_param', $param);
    }
}

如果您想在标题和作者ID上添加过滤器,您可能做如下操作。

namespace App\Filters;

use RalphMorris\LaravelQueryFilter\QueryFilter;

class PostFilters extends QueryFilter
{
    public function title($title)
    {
        $this->builder->where('title', 'like', "%{$title}%");
    }

    public function author($authorId)
    {
        $this->builder->where('author_id', $authorId);
    }
}

最后,要将过滤器添加到您的查询中,请将filter()查询作用域应用于FilterableTrait中的查询,并通过PostFilters类传递。

public function index(PostFilters $filters)
{
    $posts = Post::filter($filters)->get();
}

变更日志

请参阅CHANGELOG以获取更多最近更改的信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过ralph@bubblehubsolutions.co.uk发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可证

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

Laravel Package Boilerplate

此软件包是使用Laravel Package Boilerplate生成的。