leonardjke / laravel-query-filter
Laravel 包,用于通过 URL 查询字符串动态过滤 Eloquent 结果。
dev-master
2020-04-26 11:00 UTC
Requires
- php: >=7.2.5
- illuminate/support: >=4.1
This package is auto-updated.
Last update: 2024-09-26 20:50:32 UTC
README
基于 heroicpixels/filterable (https://github.com/heroicpixels/filterable) 此包提供了一种方便的方法,可以根据 URL 中的查询字符串参数自动过滤 Eloquent 结果。Filterable 解析查询字符串,将其与您希望自动过滤的列进行比较,然后创建一个动态作用域,Eloquent 使用该作用域构建 SQL。
安装
将包添加到 composer.json 文件中的 'require' 部分
"require": {
"leonardjke/laravel-query-filter": "dev-master"
},
从命令行运行 'composer dump-autoload'
#composer dump-autoload
许可证
版权 2020 leonardjke
在 MIT 许可证下发布 (https://open-source.org.cn/licenses/MIT)。有关详细信息,请参阅 LICENSE 文件。
用法
Filterable.php
class Object extends Eloquent {
use Leonardjke\LaravelQueryFilter\Filterable;
}
以下示例使用 Filterable 类!
在上面的示例中,类 Object 对应于表 'objects'。
可过滤列
指定您希望自动过滤的列。
$columns = [ 'color', 'shape', 'total' ];
例如
http://www.your-site/?color=blue&shape=round&total=500
如果您不想公开它们,也可以为列指定别名
$columns = [ 'col' => 'color', 'sha' => 'shape', 'tot' => 'total' ];
例如
http://www.your-site/?col=blue&sha=round&tot=500
要过滤结果,只需通过 filter() 方法将列传递给 Eloquent 即可
$objects = Object::filter($requers)->get()->toArray();
以下示例演示了如何使用查询字符串参数。
单个值
?color=red
SELECT ... WHERE ... color = 'red'
多个值
?color[]=red&color[]=blue
SELECT ... WHERE ... color = 'red' OR color = 'blue'
多个参数
?color[]=red&shape[]=triangle
SELECT ... WHERE ... color = 'red' AND shape = 'triangle'
布尔运算符
?color[]=red&shape[]=triangle&bool[shape]=or
SELECT ... WHERE ... color = 'red' OR shape = 'triangle'
比较运算符
大于
?total=599&operator[total]=>
SELECT ... WHERE ... total > '599'
小于
?total=600&operator[total]=<
SELECT ... WHERE ... total < '600'
不等于
?shape=triangle&operator[shape]=!=
SELECT ... WHERE ... shape != 'triangle'
介于 (待办事项)
?total[start]=900&total[end]=5000
SELECT ... WHERE ... total BETWEEN '900' AND '5000'