curvestech/laravel-request-filters
最新稳定版本:v1.1.4
Composer 安装命令:
composer require curvestech/laravel-request-filters
包简介
Simpler way to map request queries to database queries in a seamless way that follows single responsibility principle
README 文档
README
A simple and elegant way to map request queries to database queries in Laravel, following single responsibility principles.
Installation
composer require curvestech/laravel-request-filters
The service provider will be automatically registered via Laravel's package auto-discovery.
Usage
1. Generate a Filter
php artisan make:filter UserFilter
This creates a filter class in app/Http/Filters/UserFilter.php.
2. Add the Filterable Trait to Your Model
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Curvestech\LaravelRequestFilters\Traits\Filterable; class User extends Model { use Filterable; }
3. Use in Your Controller
<?php namespace App\Http\Controllers; use App\Http\Filters\UserFilter; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function index(UserFilter $filter) { $users = User::filter($filter)->get(); return response()->json($users); } }
4. Filter Methods
Each public method in your filter class corresponds to a query parameter:
<?php namespace App\Http\Filters; use Curvestech\LaravelRequestFilters\AbstractFilter; use Illuminate\Database\Eloquent\Builder; class UserFilter extends AbstractFilter { // URL: ?name=john public function name(Builder $builder, $value): Builder { return $builder->where('name', 'like', '%' . $value . '%'); } // URL: ?status=active public function status(Builder $builder, $value): Builder { return $builder->where('status', $value); } // URL: ?created_from=2023-01-01 public function createdFrom(Builder $builder, $value): Builder { return $builder->where('created_at', '>=', $value); } }
Examples
Basic Filtering
GET /users?name=john&status=active
Date Range Filtering
GET /users?created_from=2023-01-01&created_to=2023-12-31
Multiple Values
GET /users?ids=1,2,3
# or
GET /users?ids[]=1&ids[]=2&ids[]=3
Requirements
- PHP ^8.0
- Laravel ^8.0|^9.0|^10.0|^11.0|^12.0
License
MIT
统计信息
- 总下载量: 15
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-09-28