fivelab/ruler

添加满足对象的规则,并根据规格生成查询。

v1.2.0 2023-02-15 18:02 UTC

This package is auto-updated.

Last update: 2024-09-15 21:33:52 UTC


README

 #StandWithUkraine 

Ruler

这是一个库,可以将字符串规则应用于任何查询构建器(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/