Отфильтровать результат запроса в классе контроллера или хранилища?

Наши контроллеры в нашем приложении Symfony часто должны фильтровать результаты запроса, прежде чем передать результаты в шаблон представления. Каков наилучший способ фильтрации этих результатов запроса. На данный момент у нас часто бывает что-то вроде этого:

public function indexAction()
{
$form = $this->getFilterForm();

$repository = $this->getDoctrine()->getRepository(...);
$queryBuilder = $repository->createQueryBuilder('q');

if ($name = $form->get('name')->getData()) {
$queryBuilder
->andWhere('q.name = :name')
->setParameter('name', $name);
}

if ($birthday = $form->get('birthday')->getData()) {
$queryBuilder
->andWhere('q.name = :name')
->setParameter('name', $birthday);
}

return array(
'result' => $queryBuilder->getQuery()->getResult()
);
}

На мой взгляд, это не должно быть частью контроллера. С другой стороны, я думаю, что помещение всего этого в класс репозитория для этого типа сущности может привести ко многим filter* методы для нескольких проблем.

У кого-нибудь есть лучшая практика для того или иного умного представления, где разместить методы фильтрации или как обрабатывать фильтрацию данных?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]