2

私は 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 を使用する列をリストする必要があります。フィルターを使用しようとすると、エラー: 未定義の ID または結果変数でグループ化できません。

それを解決する方法はありますか?

4

0 に答える 0