vdhicts/data-filter

通过uri中的编码过滤参数轻松过滤数据

1.6.3 2018-05-15 09:37 UTC

This package is auto-updated.

Last update: 2024-09-15 00:18:27 UTC


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_ACCEPTAPPROVAL_REJECTAPPROVAL_START_OF_RANGEAPPROVAL_END_OF_RANGEAPPROVAL_INAPPROVAL_NOT_INAPPROVAL_LIKEAPPROVAL_ILIKE(如果您的数据库支持,例如Postgres,则可以使用)。

过滤组

字段是某个组的一员。组有一个逻辑连接词,即组常量CONJUNCTION_ANDCONJUCTION_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解决方案。