AbstractExtension.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Doctrine;
  4. use ApiPlatform\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
  5. use ApiPlatform\Doctrine\Orm\Extension\QueryItemExtensionInterface;
  6. use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
  7. use ApiPlatform\Metadata\Operation;
  8. use Doctrine\ORM\QueryBuilder;
  9. use Exception;
  10. /**
  11. * Classe ... qui ...
  12. */
  13. abstract class AbstractExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
  14. {
  15. /**
  16. * @param QueryBuilder $queryBuilder
  17. * @param QueryNameGeneratorInterface $queryNameGenerator
  18. * @param string $resourceClass
  19. * @param Operation|null $operation
  20. * @param mixed[] $context
  21. * @return void
  22. * @throws Exception
  23. */
  24. public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, Operation $operation = null, array $context = []): void
  25. {
  26. $this->addWhere($queryBuilder, $resourceClass);
  27. }
  28. /**
  29. * @param QueryBuilder $queryBuilder
  30. * @param QueryNameGeneratorInterface $queryNameGenerator
  31. * @param string $resourceClass
  32. * @param list<int> $identifiers
  33. * @param Operation|null $operation
  34. * @param mixed[] $context
  35. * @return void
  36. * @throws Exception
  37. */
  38. public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, Operation $operation = null, array $context = []): void
  39. {
  40. $this->addWhere($queryBuilder, $resourceClass);
  41. }
  42. protected function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void
  43. {
  44. throw new Exception('need override addWhere function', 500);
  45. }
  46. }