maksa988/laravel-filters

Laravel 过滤器

v0.3 2021-01-26 08:45 UTC

This package is auto-updated.

Last update: 2024-09-26 16:44:01 UTC


README

Laravel 过滤器模型。

PHP >= 5.6.4, Laravel >= 5.3

安装

Laravel 过滤器通过 Composer 安装。对于大多数使用情况,您需要要求 maksa988/laravel-filters 和一个单独的网关

composer require maksa988/laravel-filters

用法

首先您需要创建一个过滤器,您可以使用 artisan 命令 php artisan make:filter PostFilter 来完成此操作。

之后,将在 App\Filters 目录中创建并创建 PostFilter 过滤器。

<?php

namespace App\Filters;

use Maksa988\LaravelFilters\Filters;

class PostFilter extends Filters
{
    /**
     * Available filters
     *
     * @var array
     */
    protected $filters = [
        'title',
    ];

    /**
     * @param string $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function title($value)
    {
        return $this->builder->where('title', $value);
    }
}

在过滤器类中,创建您必须在 $filters 数组中指定的名称的方法。该方法将接收从请求中接受的价值。

在类中可用 Elequent 构建器,用于编译在过滤数据时将调用的查询。

/**
 * Display a listing of the resource.
 *
 * @param Post $post
 * @param PostFilter $filter
 * @return \Illuminate\View\View
 */
public function index(Post $post, PostFilter $filter)
{
    $list = $post->filter($filter)->paginate(20);

    return $this->view(compact('list'));
}

您可以通过简单调用模型中的范围 filter 并传递带有过滤器的类来使用过滤器。

为了让范围在模型中可用,您需要连接特质 Maksa988\LaravelFilters\Traits\HasFilters

class Post extends Model
{
    use HasFilters;
}

为了通过地址中的标题过滤器过滤数据,只需传递一个带有该名称的字段,例如,这可以通过 GET 完成使用

http://example.com/posts?title=Post%20title

变更日志

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

贡献

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

安全性

如果您发现任何安全相关的问题,请通过电子邮件发送给我 maksa988ua@gmail.com 而不是使用问题跟踪器。

致谢

许可证

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