在我的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,
// ...
)
);
}