buibr / eloquent-filter
本包的最新版本(v1.0)没有提供许可信息。
通过过滤查询字符串到eloquent查询进行搜索
v1.0
2024-09-14 05:05 UTC
Requires
- laravel/framework: >6.0
README
eloquent-filter 是一个简单的包,可以根据请求查询参数使用预定义的方法过滤 Eloquent 查询。它允许您轻松地为 Laravel 应用程序构建复杂的查询过滤器。
安装
您可以通过 composer 安装此包
composer require buibr/eloquent-filter
使用
步骤 1:将 HasFilters 特性添加到您的模型
将 HasFilters 特性包含在任何您希望使用查询过滤器的 Eloquent 模型中。
use BI\EloquentFilter\HasFilters; class YourModel extends Model { use HasFilters; // Other model code... }
步骤 2:创建一个过滤器类
创建一个新的过滤器类,该类继承自 QueryFilter。在这个类中,为每个要过滤的查询参数定义方法。每个方法都应该接受参数值并根据需要进行查询修改。
use BI\EloquentFilter\QueryFilter; class YourModelFilter extends QueryFilter { public function status($value) { return $this->builder->where('status', $value); } public function category($value) { return $this->builder->where('category_id', $value); } // Add more filter methods as needed... }
步骤 3:在控制器中应用过滤器
在控制器中,使用 filter 范围对查询应用过滤器。将您的过滤器类的实例作为参数传递。
use App\Models\YourModel; use App\Filters\YourModelFilter; class YourController extends Controller { public function index(YourModelFilter $filters) { $items = YourModel::filter($filters)->get(); return response()->json($items); } }
示例请求
现在您可以通过请求 URL 中的参数来过滤查询
GET /your-models?status=active&category=1
这将根据您在 YourModelFilter 类中定义的方法应用 status 和 category 过滤器。
自定义过滤器
要自定义过滤器的应用方式,只需在过滤器类中添加更多方法。每个方法对应一个查询参数,并可以根据需要修改 Eloquent 查询。
class YourModelFilter extends QueryFilter { public function created_at($value) { return $this->builder->whereDate('created_at', $value); } public function sort($value) { return $this->builder->orderBy('created_at', $value); } }
贡献
欢迎贡献!如果您遇到任何问题或对改进有建议,请提交问题或拉取请求。
许可
此包是开源软件,使用 MIT 许可证许可。MIT 许可证.