/** * @param BannerPositionChoiceFilter $filter * @return BannerPosition[] */ public function filterForChoose(BannerPositionChoiceFilter $filter) { $builder = $this->createQueryBuilder('p')->addSelect('b')->leftJoin('p.banner', 'b'); if (null !== $filter->getBannerStatus()) { switch ($filter->getBannerStatus()) { case BannerPositionChoiceFilter::BANNER_STATUS_HAS_BANNER: $builder->andWhere('p.banner IS NOT NULL'); break; case BannerPositionChoiceFilter::BANNER_STATUS_DOES_NOT_HAVE_BANNER: $builder->andWhere('p.banner IS NULL'); break; } } if ($filter->getId()) { $builder->andWhere('p.id = :id')->setParameter('id', $filter->getId()); } return $this->returnFilteredEntities($builder, $filter, 'p.id'); }