首页 > 解决方案 > 带有 Highcharts 的 codeigniter - 数据不来控制器查看

问题描述

我试图将 highcharts 库添加到我的 CI 项目中。所以我在我的控制器中尝试了数据库查询

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class ChartController extends CI_Controller {

  public function __construct() {

       parent::__construct();

       $this->load->database();

    } 


    public function index()

    {

        $query = $this->db->query("SELECT SUM(numberofclick) as count FROM demo_click 

            GROUP BY YEAR(created_at) ORDER BY created_at"); 

        $data['click'] = json_encode(array_column($query->result(), 'count'),JSON_NUMERIC_CHECK);



        $query = $this->db->query("SELECT SUM(numberofview) as count FROM demo_viewer 

            GROUP BY YEAR(created_at) ORDER BY created_at"); 

        $data['viewer'] = json_encode(array_column($query->result(), 'count'),JSON_NUMERIC_CHECK);



        $this->load->view('my_chart', $data);

    }

}

然后我尝试通过视图访问。我放置了以下代码来检查控制器的输出。

<?php
 echo var_dump($this->_ci_cached_vars);
?>

然后我得到了,没有值的输出。问题是什么?

array (size=2)
  'click' => string '[]' (length=2)
  'viewer' => string '[]' (length=2)

标签: phpcodeigniterhighcharts

解决方案


可能发生这种情况是因为您返回的是一组对象而不是数组。由于array_column()期望第一个参数是数组,因此尝试更改$query->result()$query->result_array()on each $data

public function index()

{

    $query = $this->db->query("SELECT SUM(numberofclick) as count FROM demo_click 

        GROUP BY YEAR(created_at) ORDER BY created_at"); 

    $data['click'] = json_encode(array_column($query->result_array(), 'count'),JSON_NUMERIC_CHECK);



    $query = $this->db->query("SELECT SUM(numberofview) as count FROM demo_viewer 

        GROUP BY YEAR(created_at) ORDER BY created_at"); 

    $data['viewer'] = json_encode(array_column($query->result_array(), 'count'),JSON_NUMERIC_CHECK);



    $this->load->view('my_chart', $data);

}

推荐阅读