ricktap/qriteria

自动将URL参数映射到排序、过滤、包含和选择数据,在Laravel 5中提供易于使用的流畅API。默认参数结构与https://jsonapi.fullstack.org.cn规范兼容。

0.6.1 2016-08-13 10:23 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:20:12 UTC


README

Qriteria之家:https://github.com/ricktap/Qriteria

Qriteria是由Query和Criteria两个词组合而成的混合词。它的目的是将请求的$_GET参数映射到JSON API规范中描述的filterfieldssortincludelimit等单词,以便对eloquent模型进行查询。

Qriteria的流畅API允许使用三个查询钩子:

  • 基于类的预钩子,在向每个模型实例发送查询之前执行
  • 调用查询,在翻译之前调用,在您的预钩子之后,并且仅针对此单个实例对象
  • 基于方法的查询,在翻译之后调用,可以像eloquent中的范围方法一样使用

安装

composer require ricktap/qriteria

将以下内容添加到config/app.php中的providers数组中

RickTap\Qriteria\QriteriaServiceProvider::class,

配置

要配置Qriteria,您可以运行以下命令生成config/qriteria.php配置文件

php artisan vendor:publish

过滤

语法

filter=name:like:John%,(age:gt:60|age:lt:20),status:eq:occupied

结果

$query->where("name","LIKE","John%")->where(function ($q) { 
  return $q->where("age",">",60)->orWhere("age","<",20);
})->where("status","=","occupied");

描述

每个过滤语句由三个部分组成,由冒号(:)分隔。第一部分表示查询的字段,第二部分是操作,可以是符号或单词(例如,您可以使用=或eq进行相同的操作),第三部分是要比较的值。过滤语句由逗号(,)或管道(|)分隔。逗号表示,管道表示。语句可以像数学函数一样用括号括起来,以确定执行顺序。

待办事项

  • 编写更全面的文档,甚至可能是一个维基百科
  • 编写更多的测试
  • 增加更多的检查
  • 将eq映射到=,lt映射到<等
  • 将可搜索特征拆分为两个独立的特征。一个用于过滤,一个用于Qriteria本身
  • 进一步验证用户输入,目前我只是在检查括号是否平衡且有序