← Back
Editing: ServiceRepository.php
<?php namespace App\Repository; use App\Entity\Service; use App\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\Query; use Doctrine\ORM\Query\Expr\Join; use Doctrine\ORM\QueryBuilder; use Doctrine\Persistence\ManagerRegistry; /** * @method Service|null find($id, $lockMode = null, $lockVersion = null) * @method Service|null findOneBy(array $criteria, array $orderBy = null) * @method Service[] findAll() * @method Service[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class ServiceRepository extends ServiceEntityRepository { use OptionsTrait; public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Service::class); } public function findByManager(User $manager): Query { return $this->createQueryBuilder('s') ->leftJoin('s.elevatorBreakdown', 'eb') ->leftJoin('eb.adresse', 'ad') ->leftJoin('s.controle', 'c') ->leftJoin('c.adresse', 'adr') ->where('adr.manager = :manager') ->orWhere('ad.manager = :manager') ->orderBy('s.createdAt', 'desc') ->setParameter('manager', $manager) ->getQuery(); } public function getByAgenciesByMonth(array $agenciesId, bool $previous = false): array { $qb = $this->createQueryBuilder('s') ->select('SUM(s.done) as cnt') ->addSelect('DATE_FORMAT(c.dateRealisation, \'%Y-%m\') as month') ->leftJoin('s.controle', 'c', Join::WITH, 'c.valide = 1') ->leftJoin('c.adresse', 'a') ->andWhere('a.agency IN ('.implode(',', $agenciesId).')') ->groupBy('month'); $qb = $this->addOptions($qb, $previous); return $qb->getQuery()->getResult(); } public function findByAgenciesQuery(array $agenciesId): QueryBuilder { $qb = $this->createQueryBuilder('s') ->leftJoin('s.controle', 'c') ->leftJoin('c.adresse', 'a') ->where('a.agency IN ('.implode(',', $agenciesId).')'); return $this->addOptions($qb); } }
Save File
Cancel