Menampilkan data dari dua tabel di CodeIgniter

Ditulis Oleh:

Menampilkan data dari dua tabel di CodeIgniter – Sebelumnya saya sudah memposting artikel mengenai cara membuat model view dan controller pada postingan tersebut kita telah belajar menggunakan database dengan studi kasus database akademik pada tabel mahasiswa. Postingan tersebut hanya menampilkan data dari satu tabel, Lalu bagaimana caranya untuk men-joinkan lebih dari satu tabel ? Mari simak pembahasan saya berikut ini

Desain Tabel

Pada contoh kali ini saya masih tetap menggunakan studi kasus tentang akademik dimana saya mempunyai dua tabel yaitu mahasiswa dan jurusan. Kedua tabel ini memiliki relasi (hubungan) dimana pada field jurusan pada tabel mahasiswa merupakan references dari field kode_jurusan pada tabel jurusan.

Untuk membuat tabel ini sudah saya posting pada artikel

Model

Selanjutnya kita buat sebuah model Model_mahasiswa.php pada bagian model di dalam folder application

<?php
Class Model_mahasiswa extends CI_Model
{
  function TampilMahasiswa() 
    {
        $this->db->order_by('nik', 'ASC');
        return $this->db->from('mahasiswa')
          ->join('jurusan', 'jurusan.kode_jurusan=mahasiswa.jurusan')
          ->get()
          ->result();
    }  
}
?>

Model dengan nama Model_mahasiswa yang memiliki fungsi TampilMahasiswa()

Methos ini akan menampilkan data dari tabel mahasiswa yang di joinkan dengan tabel jurusan. Perhatikan pada sintax

   ->join('jurusan', 'jurusan.kode_jurusan=mahasiswa.jurusan')

Sintak tersebut merupakan perintah join atau membuat relasi tabel dengan Active record pada Codeigniter. Perintah diatas sama dengan perintah SQL dibawah ini

SELECT *
FROM mahasiswa
INNER JOIN jurusan on jurusan.kode_jurusan=mahasiswa.jurusan
ORDER BY nik ASC;

Relasi yang dibuat adalah field kode_jurusan pada tabel jurusan sama dengan field jurusan yang ada pada tabel mahasiswa. Seperti terlihat pada gambar dibawah

Controller

Untuk controllernya kita buat file Mahasiswa.php didalam folder controller

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

class Mahasiswa extends CI_Controller {
    
    function __construct(){
        parent::__construct();
        $this->load->model('model_mahasiswa');

    }

	public function index()
	{
	    $data['hasil']=$this->model_mahasiswa->TampilMahasiswa();
		$this->load->view('v_mahasiswa',$data);
	}
}

Controller yang kita buat disini menggunakan fungsi construct() fungsi ini sebagai fungsi parent untuk semua fungsi yang lain, Fungsi ini juga yang akan dieksekusi pertama kali saat class Mahasiswa dipanggil. Biasanya pada fungsi ini saya meload model, helper dan library. Dengan meload pada fungsi construct dapat digunakan pada fungsi-fungsi lain.

Selanjutnya ada fungsi index sebagai fungsi utama pada class mahasiswa dimana isi dari function ini adalah mengambil data dari function TampilMahasiswa() pada model mahasiswa yang disimpan pada data array. Nantinya data ini akan dikirim atau diparsing ke bagian view v_mahasiswa.

View

Selanjutnya kita buat view nya buat sebuah file php dengan nama v_mahasiswa.php pada bagian view dalam folder application.

Disini saya menggunakan tabel bootstrap agar tampilannya lebih bagus. Bila kalian belum mengenal apa itu bootstrap ? Pelajari selengkapnya

<!DOCTYPE html>
<html>
<head>
    <!-- Load file CSS Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

    <!-- Load file library jQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <!-- Load file library Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

    <!-- Load file library JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<?php

?>
<table class="table">
    <thead>
  <tr>
      <th> No</th> <th>NIK</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Tanggal lahir</th><th>Jurusan</th> <th>Usia</th>
  </tr>
    </thead>
    <tbody>
    <?php
    $no=1;
    foreach ($hasil as $item)
    {
        ?>
    <tr>
        <td><?php echo $no;?></td>
        <td><?php echo $item->nik;?></td>
        <td><?php echo $item->nama;?></td>
        <td><?php echo $item->jk;?></td>
        <td><?php echo $item->tanggal_lhr;?></td>
        <td><?php echo $item->nama_jurusan;?></td>
        <td><?php echo $item->umur;?></td>
    </tr>
    <?php
            $no++;
    }
        ?>
    </tbody>
</table>
</body>
</html>

View diatas adalah hasil parsing data dari controller mahasiswa, dimana ditempilkan menggunakan perulangan foreach.

Perhatikan pada Kolom jurusan, nama jurusan diambil dari tabel jurusan. Karena pada model diatas kita sudah membuat relasinya sehingga kita dapat menampilkan data dari dua tabel tersebut.

Baca juga: Cara menghilangkan index.php pada CodeIgniter

Untuk menlihat hasilnya kita coba akses

http://localhost/akademik/mahasiswa

Bila tidak ada yang salah maka hasilnya seperti output dibawah ini

Baiklah sekian mengenai cara menampilkan data dari dua tabel di codeigniter. Semoga postingan ini bermanfaat buat sahabat programmer yang sedang belajar codeigniter. Sampai jumpa

Setiawan Dimas

Interested on Programming, especially on Website Developping.
Have a bachelor degree from STIMIK Akakom Yogyakarta, majoring in Technical Information.
Focus on Content Writer Programming Website and Internet Marketing
Setiawan Dimas