src/ApiPlatform/Extension/ComplianceExtension.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\ApiPlatform\Extension;
  3. use ApiPlatform\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
  4. use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
  5. use ApiPlatform\Metadata\Operation;
  6. use App\Entity\Compliance;
  7. use Doctrine\ORM\QueryBuilder;
  8. use Symfony\Component\Security\Core\Security;
  9. final class ComplianceExtension implements QueryCollectionExtensionInterface
  10. {
  11.     public function __construct(private Security $security)
  12.     {
  13.     }
  14.     public function applyToCollection(QueryBuilder $queryBuilderQueryNameGeneratorInterface $queryNameGeneratorstring $resourceClassOperation $operation null, array $context = []): void
  15.     {
  16.         $site = @$context['filters']['evaluations.site'];
  17.         $document = @$context['filters']['evaluations.document'];
  18.         if ((Compliance::class != $resourceClass) || !$site) {
  19.             return;
  20.         }
  21.         $rootAlias $queryBuilder->getRootAliases()[0];
  22.         $queryBuilder
  23.             ->leftJoin($rootAlias '.evaluations''e''with''e.site = :site and e.document = :document')
  24.             ->setParameter('site'$site)
  25.             ->setParameter('document'$document);
  26.     }
  27. }