*/ class ChargeRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Charge::class); } /** * @return Charge[] */ public function findAllByEntity(Household|Person $entity): array { $qb = $this->createQueryBuilder('c'); $property = $entity instanceof Person ? 'person' : 'household'; $qb->where("c.{$property} = :entity") ->setParameter('entity', $entity); return $qb->getQuery()->getResult(); } public function findByEntityAndDate($entity, \DateTime $date, $sort = null): mixed { $qb = $this->createQueryBuilder('c'); $entityStr = $entity instanceof Person ? 'person' : 'household'; $qb->where("c.{$entityStr} = :entity") ->andWhere('c.startDate <= :date') ->andWhere('c.endDate > :date OR c.endDate IS NULL'); if (null !== $sort) { $qb->orderBy($sort); } $qb->setParameters(new \Doctrine\Common\Collections\ArrayCollection([new \Doctrine\ORM\Query\Parameter('entity', $entity), new \Doctrine\ORM\Query\Parameter('date', $date)])); return $qb->getQuery()->getResult(); } }