public function filter(RouteFilter $filter) { $builder = $this->getQueryBuilder(); if ($filter->getName()) { $builder->andWhere('r.name LIKE :name')->setParameter('name', '%' . $filter->getName() . '%'); } if ($filter->getRoute()) { $builder->andWhere('r.route LIKE :route')->setParameter('route', '%' . $filter->getRoute() . '%'); } if ($filter->getParameter()) { $builder->andWhere('p.parameter LIKE :parameter')->setParameter('parameter', '%' . $filter->getParameter() . '%'); } if ($filter->getParameterName()) { $builder->andWhere('p.name LIKE :parameterName')->setParameter('parameterName', '%' . $filter->getParameterName() . '%'); } if ($filter->getIsNamed()) { switch ($filter->getIsNamed()) { case RouteFilter::IS_NAMED_TRUE: $builder->andWhere('r.name IS NOT NULL'); break; case RouteFilter::IS_NAMED_FALSE: $builder->andWhere('r.name IS NULL'); break; } } if ($filter->getIsSystem()) { switch ($filter->getIsSystem()) { case RouteFilter::IS_SYSTEM_TRUE: $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', true); break; case RouteFilter::IS_SYSTEM_FALSE: $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', false); break; } } return $this->returnFilteredEntities($builder, $filter, 'r.id'); }