entityManager = $entityManager; } public function findById(int $id): ?Media { return $this->entityManager->createQueryBuilder() ->select('m') ->from(Media::class, 'm') ->where('m.id = :media_id') ->setParameter('media_id', $id) ->getQuery() ->getOneOrNullResult(); } public function remove(Media $media): bool { $this->entityManager->remove($media); $this->entityManager->flush(); return true; } public function listNotIn(array $ids, int $templateId): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('m') ->from(Media::class, 'm') ->innerJoin('m.template', 't') ->where($qb->expr()->notIn('m.id', $ids)) ->andWhere('t.id = :templateId') ->andWhere('m.deletedAt is null') ->setParameter('templateId', $templateId) ->getQuery() ->getResult(); } public function list(int $templateId): array { return $this->entityManager->createQueryBuilder() ->select('m') ->from(Media::class, 'm') ->innerJoin('m.template', 't') ->where('m.deletedAt is null') ->andWhere('t.id = :templateId') ->setParameter('templateId', $templateId) ->getQuery() ->getResult(); } public function removeMultiple(array $medias) { foreach ($medias as $media) { $this->entityManager->remove($media); } $this->entityManager->flush(); return true; } }