ralphmorris / laravel-query-filter
这是一个帮助根据请求参数创建查询过滤器的软件包
dev-master
2019-12-03 23:11 UTC
Requires
- php: ^7.1
Requires (Dev)
- orchestra/testbench: 3.7.*
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-04 09:31:21 UTC
README
轻松添加基于请求参数的专用过滤器。最初来自Laracasts的一个优秀的教程。经过几次从项目到项目的复制,我现在将其放入一个小的软件包中,并添加了一个生成器以便于使用。
安装
您可以通过composer安装此软件包
composer require ralphmorris/laravel-query-filter
使用
要允许一个模型可过滤,首先将FilterableTrait添加到您的模型中。
use Illuminate\Database\Eloquent\Model; use RalphMorris\LaravelQueryFilter\FilterableTrait; class Post extends Model { use FilterableTrait; }
然后创建您的过滤器类,运行以下命令。
php artisan make:filter PostFilters
如果您使用的是默认命名空间/目录结构,这将把过滤器类放在App\Filters命名空间下。它应该看起来像这样。
namespace App\Filters; use RalphMorris\LaravelQueryFilter\QueryFilter; class PostFilters extends QueryFilter { /** * Example * * The request parameter key as the method name. * Passes the parameters value to the method * so we can apply a filter to the query. * * @param mixed $param Value of the request parameter */ public function example_request_param($param) { $this->builder->where('example_request_param', $param); } }
如果您想在标题和作者ID上添加过滤器,您可能做如下操作。
namespace App\Filters; use RalphMorris\LaravelQueryFilter\QueryFilter; class PostFilters extends QueryFilter { public function title($title) { $this->builder->where('title', 'like', "%{$title}%"); } public function author($authorId) { $this->builder->where('author_id', $authorId); } }
最后,要将过滤器添加到您的查询中,请将filter()查询作用域应用于FilterableTrait中的查询,并通过PostFilters类传递。
public function index(PostFilters $filters) { $posts = Post::filter($filters)->get(); }
变更日志
请参阅CHANGELOG以获取更多最近更改的信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过ralph@bubblehubsolutions.co.uk发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
Laravel Package Boilerplate
此软件包是使用Laravel Package Boilerplate生成的。