我是 api 平台的新手,我正在尝试添加自定义通用过滤器以按给定列对数据进行分组。
我是这样写的:
<?php
namespace AppBundle\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\AbstractFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\QueryBuilder;
final class GroupFilter extends AbstractFilter
{
protected function filterProperty(string $property, $value, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null)
{
$parameterName = $queryNameGenerator->generateParameterName($property);
$columns = explode(';',$value);
foreach($columns as $col) {
$queryBuilder->addGroupBy($col);
}
}
public function getDescription(string $resourceClass): array
{
$description = [];
// foreach ($this->properties as $property => $strategy) {
$description['groupBy'] = [
'property' => 'Given column names',
'type' => 'string',
'required' => false,
'swagger' => ['description' => 'Grouping data - used GroupBy - separate columns with ; '],
];
// }
return $description;
}
}
但在 SQL 中,我应该列出要使用 groupBy 的列。当我尝试使用过滤器时,我得到:错误:无法按未定义的标识或结果变量分组。
知道如何解决吗?