私は 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 または結果変数でグループ化できません。
それを解決する方法はありますか?