intraset/laravel-filter

根据 HTTP 请求过滤 Eloquent 查询。

v0.1.0 2022-12-28 13:19 UTC

This package is auto-updated.

Last update: 2024-09-30 02:00:01 UTC


README

Latest Version on Packagist MIT Licensed Total Downloads

根据 HTTP 请求过滤 Eloquent 查询。

安装

composer require intraset/laravel-filter

使用

要应用过滤器,例如在用户模型上,必须使用特性

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Intraset\LaravelFilter\HasFilter;

class User extends Model
{
    use HasFilter;
}

将过滤器类添加到您的应用程序中,按名称排序用户并使用 ?name= 参数进行过滤

<?php

namespace App\Http\Filters;

use Illuminate\Database\Eloquent\Builder;
use Intraset\LaravelFilter\Filter;

class UserFilter extends Filter
{
    /**
     * Apply filters.
     *
     * @param  \Illuminate\Database\Eloquent\Builder  $builder
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function apply(Builder $builder)
    {
        parent::apply($builder);

        $builder->orderBy('name');

        return $builder;
    }

    /**
     * Name filter.
     *
     * @param  string|null  $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function name($value = null)
    {
        $this->builder->where('name', $value);

        return $this->builder;
    }
}

然后可以使用过滤器类简化控制器索引处理程序

public function index(Request $request, UserFilter $filter)
{
    $users = User::filter($filter)->get();

    return $users;
}

鸣谢

我在阅读由 D. Nagy Gergő 撰写的文章后得到了过滤 HTTP 请求的想法,并使用了代码。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件