aidynmakhataev/laravel-filterable

用于通过URL查询字符串进行过滤的Laravel扩展包

1.0.0 2018-07-04 15:06 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:04 UTC


README

Latest Version on Packagist Total Downloads Build Status StyleCI

用于通过URL查询字符串进行过滤的Laravel扩展包

安装

通过Composer

$ composer require aidynmakhataev/laravel-filterable

用法

  1. 使用以下Artisan命令创建新的过滤器
php artisan make:filter UserFilter

这将创建 App\Http\Filters\UserFilter.php。您可以在 config/filterable.php 中覆盖默认命名空间。

return [

    /*
    |--------------------------------------------------------------------------
    | Filters Configuration
    |--------------------------------------------------------------------------
    |
    */

    // namespace for the generated filters
    'namespace' =>  'App\Http\Filters'
];

然后,您需要按照以下规则定义您的过滤逻辑

  • 没有对应过滤方法的查询字符串将被忽略
  • 空字符串将被忽略
  • 每个请求键的值将被注入到相应的过滤方法中
  • 您可以通过 $this->builder 访问Eloquent查询构建器实例

示例:

为了定义以下URL请求的方法

http://yourdomain.com/api/users?gender=male&working=1


您将使用以下方法

namespace App\Http\Filters;

use AidynMakhataev\LaravelFilterable\BaseFilter;

class UserFilter extends BaseFilter
{
    public function gender($value)
    {
        return $this->builder->where('gender', $value);
    }

    public function working($value)
    {
        return $this->builder->where('is_working', $value);
    }
}
  1. 添加在第1步中创建的特质并将创建的过滤类绑定到您的模型上。
use AidynMakhataev\LaravelFilterable\Filterable;

class User extends Authenticatable
{
   use Filterable;

   /**
    * Filters attribute.
    *
    * @var array
    */
   protected $filters = \App\Http\Filters\UserFilter::class;

}
  1. 最后,在您的控制器中使用它
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

class UserController extends Controller
{
    public function index(Request $request)
    {
        $users = User::filter($request->all())->get();

        return response()->json($users);
    }
}

贡献

欢迎任何人贡献。Fork,做出您的更改,然后提交拉取请求。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 makataev.7@gmail.com 联系,而不是使用问题跟踪器。

致谢

许可

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