aidynmakhataev / laravel-filterable
用于通过URL查询字符串进行过滤的Laravel扩展包
1.0.0
2018-07-04 15:06 UTC
Requires
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-29 05:02:04 UTC
README
用于通过URL查询字符串进行过滤的Laravel扩展包
安装
通过Composer
$ composer require aidynmakhataev/laravel-filterable
用法
- 使用以下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步中创建的特质并将创建的过滤类绑定到您的模型上。
use AidynMakhataev\LaravelFilterable\Filterable; class User extends Authenticatable { use Filterable; /** * Filters attribute. * * @var array */ protected $filters = \App\Http\Filters\UserFilter::class; }
- 最后,在您的控制器中使用它
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。有关更多信息,请参阅 许可文件。