过滤控制器或存储库类中的查询结果?

时间:2014-12-02 10:49:23

标签: php symfony controller repository

我们的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*方法。

是否有人有最佳实践或其他任何聪明的想法,在哪里放置过滤器方法或如何处理过滤数据?

0 个答案:

没有答案