2016-05-25 3 views
2

Спокойной ночи всем! ​ ​ChartsJS и Laravel5

У меня есть следующий код в 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?

EDIT

Теперь я получаю следующий формат, графическое шоу числа 1,2,3, но cant't печатать линии графики.

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

ответ

0

В контроллере вы звоните return view('admin.main')->with('userInfo',$user_info);

with('userInfo',$user_info) устанавливает в $userInfo переменную по вашему мнению, с содержанием $ user_info, так что просто что-то подобное, что должно сделать трюк

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

EDIT: Я предположил, что $ user_info уже в правильном формате, но вы не могли понять, как его отобразить. Читая ваши комментарии, я лучше понимаю ваши потребности. Я не знаю, какой формат данных диаграммыJS и что вы хотите отобразить. Глядя $ Пример данных и ваш DB запрос, я предполагаю, что вы хотите, чтобы отобразить данные в формате «ROLE_ID» => COUNT (*) так, в этом случае, я хотел бы сделать что-то вроде

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

Да, я использую это раньше, графика ничего не показывает:/ – jc1992

+0

См правки, я не понял ваш вопрос правильно – gbalduzzi

+0

отредактировать вопрос , формат, который я получаю, находится в edit @gbalduzzi – jc1992

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); 
} 
Смежные вопросы