Chart JS + Laravel - 如何向数组添加0

时间:2017-03-21 14:20:54

标签: php arrays laravel-5 chart.js

员工和项目

我有一个数据透视表,我的代码抓住了员工分配到的所有项目以及他们所在的阶段。

阶段

等待
正在进行中 推出

如果员工在每个阶段都有项目,我会得到图表来显示数据。但是,当每个阶段都没有项目时,数组会搞乱,条形图会显示数据,但是错误的部分。例如:

有效的数组:[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);

这也不起作用。有什么想法吗?

1 个答案:

答案 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);