我正在 symfony 上工作,我正在尝试计算数据库中每个团队的员工人数,并将其显示在图表中。所以我在存储库中创建了这个查询:
function findNbEmp()
{
$query = $this->getEntityManager()
->createQuery("Select COUNT(distinct u.id) AS nbEmp, e.nomEq as equipe
FROM MyAppEspritBundle:User u INNER JOIN
MyAppEspritBundle:Equipe e
WITH u.id_equipe=e.idEq
GROUP BY u.id_equipe");
return $query->getResult();
}
然后转到控制器并完成此操作:
public function chartLineAction()
{
$em = $this->getDoctrine()->getManager();
$nbemps = $em->getRepository('MyAppEspritBundle:User')->findNbEmp();
var_dump($nbemps);
$tab = array();
$categories = array();
foreach ($nbemps as $nb) {
// var_dump($user['nbEmp']);
array_push($tab,$nb['nbEmp'] );
array_push($categories, $nb['equipe']);
}
// Chart
$series = array(
array("name" => "Nb employés", "data" => array($tab))
);
$ob = new Highchart();
$ob->chart->renderTo('linechart'); // #id du div où afficher le graphe
$ob->title->text('Nombre d employés par équipe');
$ob->xAxis->title(array('text' => "Equipe"));
$ob->yAxis->title(array('text' => "Nb Employés"));
$ob->xAxis->categories($categories);
$ob->series($series);
return $this->render('MyAppEspritBundle:Gerant:AccueilGerant.html.twig',
array(
'chart' => $ob
));
}
问题是当我将 $nb['nbEmp'] 放入 array_push($tab, $nb['nbEmp']) 时,图表就消失了,所以当我只让 ($tab, $nb) 时,至少我可以看到我在数据库中创建和获取的组的名称。 顺便说一句,除了第一个 array_push (因为 nbEmp)之外,捆绑包中的所有内容都工作正常
即使我使用了 var_dump,它也显示了我想在图表上设置但无法设置的结果:
我想知道我的代码中缺少什么以便它可以在图中正确读取 nbEmp 。 你们能帮我吗?如果其他解决方案比我想要实现的解决方案更有效,我也愿意接受。请问,我需要知道我应该在第一个 array_push 中放入什么?
提前致谢。
public function chartLineAction()
{
$em = $this->getDoctrine()->getManager();
// $users is not the best name for this result
$users = $em->getRepository('MyAppEspritBundle:User')->findNbEmp();
// var_dump($users);
$tab = array();
$categories = array();
foreach ($users as $user) {
$tab[] = (int)$user['nbEmp']
}
// Chart
$series = array(
array("name" => "Nb employés", "data" => array($tab))
);
$ob = new Highchart();
$ob->chart->renderTo('linechart');
$ob->title->text('Nombre d employés par équipe');
$ob->xAxis->title(array('text' => "Equipe"));
$ob->yAxis->title(array('text' => "Nb Employés"));
// $ob->xAxis->categories($categories);
$ob->series($tab);
return $this->render('MyAppEspritBundle:Gerant:AccueilGerant.html.twig',
array(
'chart' => $ob
));
}
尝试上面的代码,它应该会显示结果,但您可能想显示“装备”ID(或名称)以及员工数量。为此,您需要像这样修改您的查询:
function findNbEmp()
{
$query = $this->getEntityManager()
->createQuery("Select COUNT(distinct u.id) AS nbEmp, u.id_equipe as id_equipe
FROM MyAppEspritBundle:User u
GROUP BY u.id_equipe");
return $query->getResult();
}
然后用
$categories
填充您的 $users['id_equipe']
并取消注释我评论的行:
// $ob->xAxis->categories($categories);
尝试我建议的第一部分,如果你得到一个图表,你会更舒服地修改和使用不同的选项。