使用2个不同的数据在图表中显示

时间:2017-12-07 08:04:43

标签: php laravel charts

我目前正在使用chartTV创建图表,但由于某种原因,我的图表似乎没有出现在我的刀片中,标题可以看到但不是图表。我想创建一个areapline图表,它将显示本周雇佣和未雇用的人数。我尝试过这样的事情,但是没有用。有人可以指导我正确地做到这一点吗?我该怎么办?

我的 dashboardController

$user1s = DB::table('evaluations')
             ->select('evaluations.Evaluation_Status','evaluations.created_at' ) 
             ->where('Evaluation_Status', '=', 'No') 
             ->get();
$user2s = DB::table('evaluations')
             ->select('evaluations.Evaluation_Status','evaluations.created_at' ) 
             ->where('evaluations.Evaluation_Status', '=', 'Yes') 
             ->get();

Charts::Database($user1s, $user2s, 'areaspline', 'highcharts')
       ->title('My nice chart')
       ->labels(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday'])
       ->dataset('Hired', [$user1s])
       ->dataset('Not Hired', [$user2s]);

return view('dashboard', ['chart' => $chart]);

我的 dashboard.blade.php

{!! Charts::assets() !!}
{!! $chart->render() !!}

2 个答案:

答案 0 :(得分:1)

如果使用来自不同数据库表的数据,则可以使用多数据库图表。 API类似于Charts :: multi。唯一的区别是如何指定数据集。

$charts = Charts::multiDatabase('areaspline', 'highcharts')
            ->title('My nice chart')
            ->colors(['#ff0000', '#ffffff'])
            ->labels(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday'])
            ->dataset('Hired', $user1s)
            ->dataset('Not Hired', $user2s);

答案 1 :(得分:0)

我认为问题是这两行:

->dataset('Hired', [$user1s])
->dataset('Not Hired',  [$user2s]);

$user1s$user2s都是数组。由于两个数组都包含对象,因此您可能还必须将它们映射到标量值(数字或字符串)以获取要使用的值。

所以你可以做这样的事情,如果你想映射名字:

$hiredUsernames = array_map(
    function ($user) {
        return $user->name;
    },
    $user1s
);
// The result will be something like: ['Max', 'Jane', ...]

->dataset('Hired', $hiredUsernames)