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