kiqcavalcanti/laravel-doctrine-filtering
Composer 安装命令:
composer require kiqcavalcanti/laravel-doctrine-filtering
包简介
apply dynamic filters using laravel doctrine
README 文档
README
Apply dynamic query filters using laravel-doctrine
How to use:
- In your Entity extends FilterEntity
- In your validator you can use the rule isValidFilter to validate the url params filters
- In your repository extends DoctrineFilterRepository and use the method applyFilters passing as parameters the queryBuilder and the url params filters.
example:
$qb =
$this->_em
->createQueryBuilder()
->select($this->getEntityName()::getEntityAlias())
->from($this->getEntityName(), $this->getEntityName()::getEntityAlias(), $indexBy);
$this->applyLaravelDoctrineFilters($qb, $filters);
Examples
example1:
url = http://localhost/advertisements?filter[created_at]=2018-07-22T18:48:16-03:00
query =
SELECT advertisement
FROM Entities\Advertisement advertisement
WHERE advertisement.createdAt = '2018-07-22 18:48:16'
example2:
url = http://localhost/advertisements?filter[id]=1,2
query =
SELECT advertisement
FROM Entities\Advertisement advertisement
WHERE advertisement.id IN (1, 2)
example3:
url = http://localhost/advertisements?filter[created_at|between]=2018-07-22T18:48:16-03:00,2018-07-22T18:48:16-03:00
query =
SELECT advertisement
FROM Entities\Advertisement advertisement
WHERE advertisement.createdAt BETWEEN '2018-07-22 18:48:16' AND '2018-07-22 18:48:16'
example 4:
url = http://localhost/advertisements?filter[customer_product][customer][name|like]=cor
query =
SELECT advertisement
FROM Entities\Advertisement advertisement
INNER JOIN Entities\CustomerProduct customer_product
WITH advertisement.customerProductId = customer_product.id
INNER JOIN Entities\Customer customer
WITH customer_product.customerId = customer.id
WHERE LOWER(customer.name) LIKE '%cor%'
Configuration Filter with Joins
In your entity add a static attribute $joins with this structure:
protected static $entityJoins [
'customer_product' => ['entity' => CustomerProduct::class, 'condition' => 'advertisement.customerProductId = customer_product.id'],
'site' => ['entity' => Site::class, 'condition' => 'advertisement.siteId = site.id']
];
OperatorEnum / available operators
case 'eq':
case '=':
return OperatorEnum::EQ;
case 'neq':
case '!=':
case '<>':
return OperatorEnum::NEQ;
case 'gt':
case '>':
return OperatorEnum::GT;
case 'gte':
case '>=':
return OperatorEnum::GTE;
case 'lt':
case '<':
return OperatorEnum::LT;
case 'lte':
case '<=':
return OperatorEnum::LTE;
case 'between':
return OperatorEnum::BETWEEN;
case 'like':
return OperatorEnum::LIKE;
case 'in':
return OperatorEnum::IN;
case 'notin':
return OperatorEnum::NOTIN;
case 'isnull':
return OperatorEnum::ISNULL;
case 'isnotnull':
return OperatorEnum::ISNOTNULL;
kiqcavalcanti/laravel-doctrine-filtering 适用场景与选型建议
kiqcavalcanti/laravel-doctrine-filtering 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.92k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2019 年 07 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kiqcavalcanti/laravel-doctrine-filtering 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kiqcavalcanti/laravel-doctrine-filtering 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.92k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-07-30