我是api-platform的新手,我试图通过给定的列添加自定义通用过滤器来对数据进行分组。
我写了这样的声音:
<?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的列。 当我尝试使用过滤器时,我得到了: 错误:无法按未定义的标识或结果变量进行分组。
知道如何解决这个问题吗?