bartlomiejbeta/filter-sorter-bundle

v2.1.0 2018-08-31 11:35 UTC

This package is auto-updated.

Last update: 2024-09-17 02:28:06 UTC


README

这个Symfony包旨在通过使用规范模式(参见 doctrine-specification)提供结构化的过滤和排序。它被设计用于API应用程序,但也可以用于标准Web应用程序。

提供以下功能:
  • FilterQueryManager - 收集所有 filter services 并提供一个应用了规范的表达式构建器。
  • FilterParamConverter - 通过查询字符串中的数据提供 filter object
  • SortParamConverter - 通过查询字符串中的数据提供 sort object

Build Status

安装

1. 通过composer安装
composer require bartlomiejbeta/filter-sorter-bundle
2. 在 AppKernel 中注册包
public function registerBundles()
{
    $bundles = array(
        // ...
        new BartB\FilterSorterBundle\FilterSorterBundle(),
    );
}

用法

假设您已经有了实体等。

1. 将实体父类改为 AbstractEntitySpecificationAwareRepository

示例

class CarRepository extends AbstractEntitySpecificationAwareRepository
{
}
2. 添加规范 (示例)
3. 添加集合过滤器 (示例)
4. 添加排序枚举 (示例)
5. 构建并注册第一个服务适配器 (适配器示例注册适配器示例)
5. 运行 (标准带有参数转换器的API)
$carCollectionFilter = (new CarCollectionFilter())->setGearboxType('automatic');

$carSorter     = new CarSort(CarSort::FUEL_TYPE);
$sortDirection = new SortDirectionType(SortDirectionType::DESC);
		
/** @var FilterQueryManager $filterQueryManager */
$filterQueryManager = $this->filterQueryManager;
$carRepository      = $this->repostioryCar;
$sort 	            = new Sort($sortDirection, $carSorter);
$limit              = new Limit(1);

$basicRepositoryDTO = new BasicRepositoryDTO($carRepository);
$queryAttributesDTO = new QueryAttributesDTO($carCollectionFilter, $sort, $limit);

$queryBuilder = $filterQueryManager->getQueryBuilder($basicRepositoryDTO, $queryAttributesDTO);
$query        = $queryBuilder->getQuery();
$result       = $query->execute();

待办事项:将示例升级到symfony 3.4 我还准备了一个完整的独立示例