innerJoin('.projects', 'p') ->andWhere('p.id IN (:projectIds)') ->setParameter('projectIds', array_map(fn ($i) => $i->getId(), $projects)) ; } public function ofSpeakers(array $speakers): self { if (empty($speakers)) { return $this; } return $this ->innerJoin('.speakers', 's') ->andWhere('s.id IN (:speakerIds)') ->setParameter('speakerIds', array_map(fn ($i) => $i->getId(), $speakers)) ; } public function ofMonth(int $month): self { return $this ->andWhere('.startAt LIKE :month') ->setParameter('month', '%-'.sprintf('%02d', $month).'-% %') ; } public function ofYear(int $year): self { return $this ->andWhere('.startAt LIKE :year') ->setParameter('year', $year.'-%-% %') ; } public function ofDay(int $day): self { return $this ->andWhere('.startAt LIKE :day') ->setParameter('day', '%-%-'.sprintf('%02d', $day).' %') ; } }