2017-06-07 39 views
0

下面是我在我的代碼查詢的var_dump:試圖把DQL查詢到Highcharts陣列,儘管陣列返回0被填充

array (size=2) 
    0 => 
    array (size=4) 
    0 => 
    array (size=1) 
     'barbell_curl_1_weight' => int 15 
    1 => 
    array (size=1) 
     'barbell_curl_1_weight' => int 20 
    2 => 
    array (size=1) 
     'barbell_curl_1_weight' => int 25 
    3 => 
    array (size=1) 
     'barbell_curl_1_weight' => int 20 

這裏是我的查詢:

/** 
* @param User $user 
* @param String $col 
* @return array 
*/ 
public function getStatsForStatsByDQL(User $user, String $col) 
{ 

    $parameters = (array('user' => $user, 
    )); 
    $em2 = $this->getDoctrine()->getManager() 
     ->getRepository('AppBundle:ExerciseStats') 
     ->createQueryBuilder('g') 
     ->setParameters($parameters) 
     ->where('g.user = :user') 
     ->select('g.'. $col) 
     ->setMaxResults(12) 
     ->join('g.user', 'user') 
     ->orderBy('g.'. 'timestamp','ASC') 
     ->getQuery()->getResult(Query::HYDRATE_ARRAY); 
    return $em2; 
    } 

正如你看到的從var_dump中,我得到了我需要的數據。這裏的Highcharts作用不言而喻的:

/** 
* @return \Symfony\Component\HttpFoundation\Response 
* @Route ("user/stats", name="user_stats") 
*/ 
public function chartAction() 
{ 
    $user = $this->getUser(); 
    // Chart 
    $query = $this->getStatsForStatsByDQL($user, 
ExerciseConsts::BARBELL_CURL_1_WEIGHT); 


    $series = array($query, array("name" => "weight", "data" => 
$query)); 

    $ob = new Highchart(); 
    $ob->chart->renderTo('linechart'); 
    $ob->title->text('Barbell Curl Weight'); 
    $ob->xAxis->title(array('text' => "Workouts")); 
    $ob->yAxis->title(array('text' => "Weight")); 
    $ob->series($series); 

    return $this->render('user/stats.html.twig', array(
     'chart' => $ob 
    )); 
} 

因此,所有我得到的回覆是0。當使用Xdebug的斷點,我回來的:

1 = {array} [2] 
    name = "weight" 
    data = {array} [4] 
    0 = {array} [1] 
    barbell_curl_1_weight = 15 
    1 = {array} [1] 
    barbell_curl_1_weight = 20 
    2 = {array} [1] 
    barbell_curl_1_weight = 25 
    3 = {array} [1] 
    barbell_curl_1_weight = 20 

我如何提取的權重和把它放到Highchart圖表中? Highcharts Bundle的文檔在這方面完全沒有。讓我知道是否有人有任何線索。謝謝!

以下是json_encode($ series,JSON_NUMERIC_CHECK)的var_dump。也許這將有助於:

string'[[{「barbell_curl_1_weight」:15},{「barbell_curl_1_weight」:20},{「barbell_curl_1_weight」:25},{「barbell_curl_1_weight」:20}],{「name」 :「weight」,「data」:[{「barbell_curl_1_weight」:15},{「barbell_curl_1_weight」:20},{「barbell_curl_1_weight」:25},{「barbell_curl_1_weight」:20}]}]'(length = 266)

+0

你可以使用'$ ob = json_encode($ ob,JSON_NUMERIC_CHECK);'然後傳遞給系列 –

+0

我不太在意。我已經有$ ob = new Highchart()。這個工作到底如何?如果你能澄清一點,那會很棒。謝謝你的時間。 –

+1

我的錯誤,應該是'$ series = json_encode($ series,JSON_NUMERIC_CHECK);' –

回答

0

我找到了解決方案。當我們正在處理一個多維數組,Highcharts不向下鑽取第一陣列,它返回0.這超出了我的迭代返回每個數組的值:現在

$temp = array(); 
    foreach($array as $k=>$v){ 
     if(is_array($v)){ 
      foreach($v as $key=>$value){ 
       $temp[] = $value; 
      } 
     } 
    } 

所以,我只需要將$ temp替換爲$ query和voila',圖表正確顯示所有值。