phpcodeigniterjoinactiverecordalias

SELECT clause column from base table overwritten by column value from a joined table in CodeIgniter active record query


The problem in this model, is that if no records found in imagini_produse, the id_produs from $this->_table will be empty because will be replaced with the empty id_produs from imagini_produse table.

How can I avoid this?

function entries_by_limit($limit, $start) {
    $this->db->select('*');
    $this->db->from("$this->_table a");
    $this->db->join('imagini_produse b', "b.id_produs = a.id_produs", "left");
    $this->db->limit($limit, $start);
    $result = $this->db->get();
    //print_r($this->db->last_query());
    return $result->result();
}

Solution

  • You can use an alias in the select() method. Please check code.

    function entries_by_limit($limit=100, $start=0) {
        $this->db->select('a.id_produs as Acolumn, b.id_produs as Bcolumn');
        $this->db->from($this->_table ." as a");
        $this->db->join('imagini_produse b', "b.id_produs = a.id_produs", "left");
        $this->db->limit($limit, $start);
        $result = $this->db->get();
        print_r($this->db->last_query());
        return $result->result();
    }