员工和项目
我有一个数据透视表,我的代码抓住了员工分配到的所有项目以及他们所在的阶段。
阶段
等待
正在进行中
推出
如果员工在每个阶段都有项目,我会得到图表来显示数据。但是,当每个阶段都没有项目时,数组会搞乱,条形图会显示数据,但是错误的部分。例如:
有效的数组:[2,4,2]
2等待
4进行中
2推出
不起作用的数组:[5]
0等待
0正在进行中
5推出
在第二种情况下,由于数组只有一个值,因此5显示在Waiting下并且未启动。如何添加0并使数组显示[0,0,5]?
感谢。
accdb
更新代码
$projects = Project::join('employee_project', 'projects.id', '=', 'employee_project.project_id')
->where('employee_project.employee_id', $id)
->groupBy('stage')
->select('stage', DB::raw('count(*) as total'))
->orderByRaw('case
when stage = "Waiting" then 1
when stage = "In Progress" then 2
when stage = "Launched" then 3
end')
->get();
foreach ($projects as $project) {
$t[] = $project->total;
}
$t = json_encode($t);
这个更新的代码给了我一个关联数组,如{" 1":4," 2":5}。 ChartJS无法使用关联数组。它需要一个像[0,4,5]这样的数组。 此外,关联数组不包括0
。NEW UPDATE
foreach ($projects as $project) {
if ($project->stage == 'Waiting') {
$t[0] = $project->total;
} elseif ($project->stage == 'In Progress') {
$t[1] = $project->total;
} elseif ($project->stage == 'Launched') {
$t[2] = $project->total;
} else {
$t[] = 0;
}
}
$t = json_encode($t);
这也不起作用。有什么想法吗?
答案 0 :(得分:0)
所以我明白了。我只需要添加一个初始化它的数组。这是代码:
$t = [0,0,0];
foreach ($projects as $project) {
if($project->stage === 'Waiting') {
$t[0] = $project->total;
} elseif($project->stage === 'In Progress') {
$t[1] = $project->total;
} elseif($project->stage === 'Launched') {
$t[2] = $project->total;
} else {
$t[] = $t;
}
}
$t = json_encode($t);