【问题标题】:CodeIgniter - Join Two Tables for Output by Day in JS Graphing TroubleCodeIgniter - 在 JS 绘图问题中加入两个表以按天输出
【发布时间】:2015-02-27 20:33:13
【问题描述】:

我的一个连接语句无法在 CI 中按天获取 JS 折线图的输出。在这里进行了大量研究,但似乎没有任何工作。

这是我的模型中的内容

function get_all ( $start_date, $end_date)
{
    $ret = array();

    $this->db->select('DATE(created_at) AS DAY,  COUNT(*) AS COUNT');
    $this->db->from('table1'); 
    $this->db->where('item_id =', 5);
    $this->db->where('created_at >=', $start_date);
    $this->db->where('created_at <=', $end_date);
    $this->db->join('table2', 'table2.id = table1.part_id AND table2.stock_id = 1', 'left' );
    $this->db->group_by('DAY(created_at)');
    $query = $this->db->get();
    foreach ($query->result() as $row)
    {
        $ret[$row->DAY] = intval($row->COUNT);
    }

    return $ret;

}

可以注释掉join,效果很好。我尝试了几种不同的修改,但无论我尝试哪种方式,都不会加载数据。

任何见解都非常感谢!谢谢。

【问题讨论】:

    标签: php mysql codeigniter join


    【解决方案1】:

    试试这个:

    未测试。

    function get_all ( $start_date, $end_date)
        {
            $ret = array();
    
            $this->db->select('table1.DATE(created_at) AS DAY,  COUNT(*) AS COUNT');
            $this->db->from('table1');
            $this->db->join('table2', 'table2.id = table1.part_id', 'left');
            $this->db->where('table1.item_id =', 5);
            $this->db->where('table1.created_at >=', $start_date);
            $this->db->where('table1.created_at <=', $end_date);
            $this->db->where('table2.stock_id =',  1);
            $this->db->group_by('table1.DAY(created_at)');
            $query = $this->db->get();
            foreach ($query->result() as $row)
            {
                $ret[$row->DAY] = intval($row->COUNT);
            }
    
            return $ret;
    
        }
    

    【讨论】:

    • 非常感谢。尝试一下,但仍然没有数据。我刚刚注意到的是,不需要按日计数的图表上的类似连接工作正常。可能与此有关?
    • 尝试从活动记录中使用count_all函数,也许这会对你有所帮助。 $this->db->count_all_results();
    【解决方案2】:

    认为这已解决,无论如何我都可以使用它...对于遇到类似问题的任何人:

    function get_all ( $start_date, $end_date)
    {
        $ret = array();
    
        $this->db->select('DATE(table2.created_at) AS DAY,  COUNT(*) AS COUNT');
        $this->db->from('table1');
        $this->db->join('table2', 'table2.part_id = table1.id AND table2.created_at >= \'' . $start_date . '\' AND table2.created_at <= \'' . $end_date . '\' AND table2.item_id = 5', 'left');
        $this->db->where('table1.stock_id =',  1);
        $this->db->group_by('DAY(table2.created_at)');
        $query = $this->db->get();
        foreach ($query->result() as $row)
        {
            $ret[$row->DAY] = intval($row->COUNT);
        }
    
        return $ret;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多