Haikal Mulya Putra
Haikal Mulya Putra

Reputation: 43

Database Error When trying to Join Table Codeigniter

So i want to fetch data from two tables. But i got this error :

enter image description here

Here is my Query from Model:

public function tampil_edit($id) {
            $this->db->join('tb_m_user', 'tb_m_user.id=tb_m_notaris.id');
            $this->db->select('tb_m_notaris.*,tb_m_user.email as email_notaris');
            return $this->db->get_where('tb_m_notaris', $id);
        }

Here is my Controller :

public function tampiledit($id) {
            $id = ['id' => $id];
            $title['title'] = 'Notaris | Edit';
            $data['notaris']    = $this->m_notaris->tampil_edit($id)->result();

            $this->load->view('template/headercss',$title);
            $this->load->view('template/sidebar');
            $this->load->view('template/navbar');
            $this->load->view('master_data/notaris/edit', $data);
            $this->load->view('template/footerjs');
        }

Here Is what the $id contain: enter image description here

Upvotes: 1

Views: 83

Answers (4)

Abdulla Nilam
Abdulla Nilam

Reputation: 38584

Check your SQL

WHERE id = 45
      ^^

This id belongs to which table? I notice there are multiple table (tb_m_notaris,tb_m_user) with id column.

To call function

tampil_edit(45) {} # makesure $id is not an array

In model

public function tampil_edit($id) {
    $this->db->select('tb_m_notaris.*,tb_m_user.email as email_notaris');
    $this->db->from('tb_m_notaris');
    $this->db->join('tb_m_user', 'tb_m_user.id = tb_m_notaris.id');
    $this->db->where('tb_m_notaris.id', $id);
    return $this->db->get()->result();
}

Upvotes: 1

Boominathan Elango
Boominathan Elango

Reputation: 1191

you should pass like this in your controller

public function tampiledit($id) {
        $id = ['tb_m_notaris.id' => $id];
        $title['title'] = 'Notaris | Edit';
        $data['notaris']    = $this->m_notaris->tampil_edit($id);

        $this->load->view('template/headercss',$title);
        $this->load->view('template/sidebar');
        $this->load->view('template/navbar');
        $this->load->view('master_data/notaris/edit', $data);
        $this->load->view('template/footerjs');
    }

Upvotes: 1

Mansi
Mansi

Reputation: 153

public function tampil_edit($id) {
   $this->db->select('tb_m_notaris.*,tb_m_user.email as email_notaris');
   $this->db->from('tb_m_notaris');
   $this->db->join('tb_m_user', 'tb_m_user.id=tb_m_notaris.id');
   $this->db->where('tb_m_notaris.id', $id);

   $query = $this->db->get();
   return $query->result_array();
}

You need to update your query to this. As id column exists in both the tables, you need to explicitly provide which table id you want to connect to by mentioning the table name.

Upvotes: 0

Heta Shah
Heta Shah

Reputation: 11

You should try this.

public function tampil_edit($id) {
   $this->db->select('tb_m_notaris.*,tb_m_user.email as email_notaris');
   $this->db->join('tb_m_user', 'tb_m_user.id=tb_m_notaris.id');
   $this->db->get_where('tb_m_notaris', array('tb_m_notaris.id' => $id));
   return $this->db->get()->row_array();
}

update this in your controller

 $data['notaris']    = $this->m_notaris->tampil_edit($id);

Upvotes: 1

Related Questions