getResourcesByCourse($course, $session); $this->addStatusQueryBuilder($status, $qb); $this->addCategoryQueryBuilder($categoryId, $qb); $this->addTitleQueryBuilder($title, $qb); return $qb; } public function findOneByTitle(string $name): ?CGroup { return $this->findOneBy( [ 'name' => $name, ] ); } private function addStatusQueryBuilder(?int $status = null, QueryBuilder $qb = null): QueryBuilder { $qb = $this->getOrCreateQueryBuilder($qb); if (null !== $status) { $qb ->andWhere('resource.status = :status') ->setParameter('status', $status) ; } return $qb; } private function addCategoryQueryBuilder(?int $categoryId = null, QueryBuilder $qb = null): QueryBuilder { $qb = $this->getOrCreateQueryBuilder($qb); if (null === $categoryId) { $qb ->andWhere('resource.category is NULL') ; } else { $qb ->andWhere('resource.category = :category') ->setParameter('category', $categoryId) ; } return $qb; } }