fivelab / ruler
添加满足对象的规则,并根据规格生成查询。
v1.2.0
2023-02-15 18:02 UTC
Requires
- php: ~7.4 || ~8.0
Requires (Dev)
- doctrine/annotations: ~1.10
- doctrine/orm: ~2.6
- escapestudios/symfony2-coding-standard: ~3.12.0
- phpmetrics/phpmetrics: ~2.8
- phpstan/phpstan: ~1.9.2
- phpunit/phpunit: ~9.5
- ruflin/elastica: ~7.0
This package is auto-updated.
Last update: 2024-09-15 21:33:52 UTC
README
#StandWithUkraineRuler
这是一个库,可以将字符串规则应用于任何查询构建器(Doctrine ORM、Elastica等)。
要开始使用Ruler,您应该为所有支持的目标创建目标工厂。之后,您可以创建Ruler并应用任何规则
<?php use FiveLab\Component\Ruler\Ruler; use FiveLab\Component\Ruler\Target\Targets; use FiveLab\Component\Ruler\Target\DoctrineOrmTarget; use FiveLab\Component\Ruler\Target\ElasticaTarget; $targets = new Targets( new DoctrineOrmTarget(), new ElasticaTarget() ); $ruler = new Ruler($targets); // Apply rules $qb = $entityManager->createQueryBuilder() ->from('Product', 'products') ->select('products'); $ruler->apply($qb, 'category.key in (:categories) and enabled = :enabled and price > :price', [ 'categories' => ['cat1', 'cat2'], 'enabled' => true, 'price' => 100 ]);
注意:系统根据点(.)自动检测SQL目标中的连接,对于文档目标则是嵌套的。如果列包含点(以ES为例),您可以通过反斜杠(\)来转义点(例如:money\.amount)。
开发
为了方便开发,您可以使用Docker
。
$ docker build -t ruler . $ docker run -it -v $(pwd):/code --name ruler ruler bash
运行成功并连接到容器后,您必须安装依赖项
$ composer update
在创建PR或合并到develop之前,请运行以下命令以验证代码
$ ./bin/phpunit $ ./bin/phpcs --config-set show_warnings 0 $ ./bin/phpcs --standard=vendor/escapestudios/symfony2-coding-standard/Symfony/ src/ $ ./bin/phpcs --standard=tests/phpcs-ruleset.xml tests/