ChartJS和Laravel5

时间:2016-05-25 21:31:43

标签: laravel chart.js

我在PHP控制器中有以下代码:

public function getMainAdminBackend(){
    $user_info = \DB::table('users')
                 ->select('role_id', \DB::raw('count(*) as total'))
                 ->groupBy('role_id')
                 ->get();
    return view('admin.main')->with('userInfo',$user_info);
}

在视图中我有这个chart.js:

<?php
    $data = array(
        'Jan' => array(33),
        'Feb' => array(32),
        'Mar' => array(12)
    );
?>

{!! app()->chartbar->render("BarChart", $data) !!}

如何使用JS Chart所需的格式转换控制器数组?

修改

现在我收到以下格式,图形显示数字1,2,3但是不能打印图形的行。

array(3) { [1]=> int(35) [2]=> int(20) [3]=> int(35) } 

2 个答案:

答案 0 :(得分:0)

在您的控制器中,您拨打return view('admin.main')->with('userInfo',$user_info);

with('userInfo',$user_info)在您的视图中使用$ user_info的内容设置$userInfo变量,所以就像这样的东西应该可以做到这一点

{!! app()->chartbar->render("BarChart", $userInfo) !!}

编辑:我假设$ user_info已经是正确的格式,但你无法弄清楚如何显示它。阅读您的评论我更了解您的需求。 我不知道哪种数据格式chartJS和你想要显示的内容。查看$ data示例和您的数据库查询,我假设您要以“role_id”=&gt;格式显示数据计数(*) 所以,在这种情况下,我会做类似

的事情
$userArray = array();
foreach($user_info as $row) {
    $userArray[$row->role_id] = $row->total;
}
return view('admin.main')->with('userInfo',$userArray);

答案 1 :(得分:0)

看起来您需要以正确的格式输入数据:

public function getMainAdminBackend() {
    $user_info = \DB::table('users')
                    ->select('role_id', \DB::raw('count(*) as total'))
                    ->groupBy('role_id')
                    ->get();

    $data = [];

    if ($user_info) {
        foreach ($user_info as $month => $value) {
            $data[date("M", mktime(0, 0, 0, $month, 1, 0))] = [$value];
        }
    }

    return view('admin.main')->with('userInfo', $data);
}