CodeIgniter - 在 JS 图形问题中加入两个表以按天输出

CodeIgniter - Join Two Tables for Output by Day in JS Graphing Trouble

我的一个连接语句在 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;

}

可以注释掉连接,它工作正常。我尝试了几种不同的修改方式,但无论我尝试哪种方式,都无法加载数据。

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

试试这个:

未测试。

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;

    }

认为这已解决,无论如何我都能正常工作...对于遇到类似问题的任何人:

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;

}