Symfony2我应该在哪里为仪表板页面跟踪实体生成的统计信息



在我的symfony2项目中,我有一个称为"问题"的实体类型。

问题起源于有限数量的来源,目前有两个来源。

我想构建一个仪表板页面,只是为了概述每个来源出现多少问题。例如:最后一个小时,过去24小时内的来源总问题,平均每分钟问题,每小时,每周,每周。本周总共与最后几周。等等。

我不确定最整洁的方法是适合Symfony2的架构。我应该将自定义查询添加到我的Question Repository吗?或者,我应该只创建一个称为QuestionReports之类的自定义服务,然后在其中添加自定义查询?或...其他?

谢谢!

我建议您保留一个简单的解决方案,在QuestionRepository中添加新方法,例如getQuestionsFrom($dateStart)getAverageNumberOfQuestionsPer($period)等。

然后在您的控制器中调用这些方法,并将结果传递为参数:

public function dashboardAction()
{
    $dt = new Datetime("now");
    $dt->modify('-1 hour');
    $questions_from_last_hour = $this->getDoctrine()
        ->getRepository('AcmeWebsiteBundle:Question')
        ->getQuestionsFrom($dt);
    $dt = new Datetime("now");
    $dt->modify('-24 hour');
    $questions_from_last_24h = $this->getDoctrine()
        ->getRepository('AcmeWebsiteBundle:Question')
        ->getQuestionsFrom($dt);
    // ...
    $twig_template = 'AcmeWebsiteBundle:Default:dashboard.html.twig';
    return $this->render($twig_template,
        array(
            'questions_from_last_hour' => $questions_from_last_hour,
            'questions_from_last_24h' => $questions_from_last_24h,
            // ...
        )
    );
}

最新更新