zaratesystems/laravel-filterable

在Laravel中对Eloquent模型应用过滤器

1.0.1 2020-12-08 18:11 UTC

This package is not auto-updated.

Last update: 2024-09-25 15:12:35 UTC


README

Github Actions Total Downloads

在Laravel中对Eloquent模型应用过滤器。

安装

您可以通过composer安装此包

composer require zaratesystems/laravel-filterable

包将自动注册自己。

使用

Zarate\Filterable\Filterable 特性添加到您的Eloquent模型中。Filterable将为您的Eloquent模型添加过滤作用域。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Zarate\Filterable\Filterable;

class User extends Model
{
    use Filterable;
}

创建一个新的过滤器类。此包在Filters目录中添加了一个创建过滤器类的命令。

php artisan make:filter UserFilter

在Filters目录中可以看到一个新的过滤器类。

<?php

namespace App\Filters;

use Zarate\Filterable\QueryFilters;

class UserFilter extends QueryFilters
{
    /**
     * @param  string  $name
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function name(string $name)
    {
        return $this->builder->where('name', $name);
    }
}

在Controller中应用过滤器类的示例。

<?php

namespace App\Http\Controllers;

use App\Filters\UserFilter;
use App\Models\User;

class UserController extends Controller
{
    public function index(UserFilter $filters)
    {
        $users = User::filter($filters)->simplePaginate();
        
        return view('users.index', compact('users'));
    }
}

通过名称过滤用户的http请求示例。

http://your-aplication.test/users?name=john

贡献

欢迎Pull requests。对于重大更改,请先提出问题以讨论您想要进行更改的内容。

请确保根据需要更新测试。

许可证

MIT