repository = $em->getRepository(UserJob::class); } public function find($id): ?UserJob { return $this->repository->find($id); } public function findAll(): array { return $this->repository->findAll(); } public function findAllActive(): array { $jobs = $this->repository->findBy(['active' => true]); usort($jobs, fn (UserJob $a, UserJob $b) => $this->translatableStringHelper->localize($a->getLabel()) <=> $this->translatableStringHelper->localize($b->getLabel())); return $jobs; } public function findAllOrderedByName(): array { $jobs = $this->findAll(); usort($jobs, fn (UserJob $a, UserJob $b) => $this->translatableStringHelper->localize($a->getLabel()) <=> $this->translatableStringHelper->localize($b->getLabel())); return $jobs; } public function findAllNotAssociatedWithUserGroup(): array { $qb = $this->repository->createQueryBuilder('u'); $qb->select('u'); $qb->where( $qb->expr()->not( $qb->expr()->exists(sprintf('SELECT 1 FROM %s ug WHERE ug.userJob = u', UserGroup::class)) ) ); return $qb->getQuery()->getResult(); } public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null) { return $this->repository->findBy($criteria, $orderBy, $limit, $offset); } public function findOneBy(array $criteria): ?UserJob { return $this->repository->findOneBy($criteria); } public function getClassName(): string { return UserJob::class; } }