vdhicts / data-filter
通过uri中的编码过滤参数轻松过滤数据
Requires
- vdhicts/pagination: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.7
README
通过uri中的编码过滤参数轻松过滤数据。
要求
此包需要PHP 5.6+。
安装
此包可以在任何PHP项目或框架中使用。该包已在PHP 5.6和PHP 7.0中进行测试。
您可以通过composer安装此包
composer require vdhicts/data-filter
用法
过滤字段
创建字段基于键和值
$fieldKey = 'manufacturer'; $fieldValue = 1; $field = new Field($fieldKey, $fieldValue);
字段有能力接受、拒绝或将值视为范围的一部分,这可以通过第三个可选参数实现。这些参数是字段的常量,分别是APPROVAL_ACCEPT、APPROVAL_REJECT、APPROVAL_START_OF_RANGE、APPROVAL_END_OF_RANGE、APPROVAL_IN、APPROVAL_NOT_IN、APPROVAL_LIKE和APPROVAL_ILIKE(如果您的数据库支持,例如Postgres,则可以使用)。
过滤组
字段是某个组的一员。组有一个逻辑连接词,即组常量CONJUNCTION_AND和CONJUCTION_OR。
$group = new Group('manufacturers', $field, Group::CONJUNCTION_OR);
提供一个或多个组给过滤器
$filter = new Filter([$group]);
顺序
可以通过OrderField对象定义排序顺序
$orderField = new Orderfield('myField', 'ASC');
将这些对象添加到排序中
$order = new Order([$orderField2]);
分页
分页由Pagination对象处理
$limit = 50; $offset = 10; $pagination = new Pagination($limit, $offset);
要删除限制,使用来自Pagination类的NO_LIMIT常量。默认情况下不使用限制,偏移量为零。
管理器
管理器可以编码和解码过滤器,以便可以在URL或会话中使用。实际的编码或解码是由实现Codec协议的Codec执行的。默认情况下提供了一个Base64编码器。
$manager = new Manager(new Base64()); $encodedFilter = $manager->encode($filter);
管理器可以解码过滤器,并将返回一个新的过滤器实例
$decodedFilter = $manager->decode($encodedFilter);
可以从过滤器中通过名称检索一个组
$decodedFilter->getGroup('manufacturers');
这将返回一个Group对象。
也可以从组中通过其键检索字段
$group->getFields('manufacturer');
这将返回一个组数组。
适配器
提供了一个查询构建器,可以轻松地使用 illuminate 查询构建器配置查询您的数据库
$filterAdapter = new QueryBuilder(); $queryBuilder = $filterAdapter->getFilterQuery($queryBuilder, $decodedFilter); return $queryBuilder->get();
您可以自由实现自己的适配器,只要它实现了FilterAdapter协议。
测试
在测试文件夹中提供了完整的代码覆盖率单元测试。通过phpunit运行
vendor\bin\phpunit
默认情况下,覆盖率报告将在build/coverage文件夹中生成。
贡献
欢迎任何贡献,但应该完全经过测试,符合PSR-2标准,并且请为每个特性创建一个单独的pull request。作为回报,您将在此页面上被列为贡献者。
安全
如果您在此或Vdhicts的其他包中发现了任何与安全相关的问题,请通过info@vdhicts.nl发送电子邮件,而不是使用问题跟踪器。
许可
此包是开源软件,许可协议为MIT许可
关于vdhicts
Van der Heiden ICT services是我个人的公司名称,我在那里作为自由职业者工作。Van der Heiden ICT services为企业和教育机构开发和实施IT解决方案。