src/Repository/Sale/SaleRepository.php line 14

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Repository\Sale;
  4. use DateTimeImmutable;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Slivki\Entity\Sale;
  8. final class SaleRepository extends ServiceEntityRepository implements SaleRepositoryInterface
  9. {
  10.     public function __construct(ManagerRegistry $registry)
  11.     {
  12.         parent::__construct($registrySale::class);
  13.     }
  14.     public function findAllActiveSalesByCategoryId(int $categoryId): array
  15.     {
  16.         $queryBuilder $this->createQueryBuilder('sale');
  17.         $expr $queryBuilder->expr();
  18.         return $queryBuilder
  19.             ->innerJoin('sale.categories''category')
  20.             ->andWhere($expr->eq('category.ID'':categoryId'))
  21.             ->andWhere($expr->eq('sale.active'':active'))
  22.             ->andWhere($expr->between(':now''sale.since''sale.till'))
  23.             ->setParameters([
  24.                 'active' => true,
  25.                 'categoryId' => $categoryId,
  26.                 'now' => (new DateTimeImmutable())->format('Y-m-d H:i:s'),
  27.             ])
  28.             ->getQuery()
  29.             ->getResult();
  30.     }
  31. }