intraset / laravel-filter
根据 HTTP 请求过滤 Eloquent 查询。
v0.1.0
2022-12-28 13:19 UTC
Requires
- php: ^8.0
- illuminate/database: ^9.0
This package is auto-updated.
Last update: 2024-09-30 02:00:01 UTC
README
根据 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)。有关更多信息,请参阅 许可证文件。