Join Tabel 2 Foreign Key pada Tabel yang Sama di CodeIgniter

Postingan kali ini saya akan menyampaikan tulisan saya yaitu cara untuk join tabel dengan 2 (dua) foreign key dalam tabel yang sama di codeigniter. Jujur saya nyari sintax ini sampai pusing nian gan! udah pingin banting laptop beneran. Kurang lebih 2 hari eh baru ngehh kodingnya. Browsing sana-sini tapi tutorial indonesia nggak ada, atau mungkin keywordnya salah kali yak wkwkwk. Sorry Curcol :D hahaha 



Sebelumnya maaf post kali ini berkaitan PHP lagi, biar sekalian berkaitan permasalahan saya selama membuat project saya. Okey, fokus ke problemnya dulu, saya akan menjelaskan duduk permasalahan yang saya alami. 



Jadi Gini, saya misalkan :
Saya mempunyai 2 Tabel (Misal : tb_pegawai, tb_kegiatan). 
Jadi Setiap kegiatan itu diampu oleh 2 orang pegawai, agar terintegrasi saya membuat 2 pegawainya sesuai dengan id di tb_pegawai.
Dimana Data Tabelnya yaitu sebagai berikut :

tb_pegawai :
id_pegawai (PK)
nama pegawai

tb_kegiatan
id_kegiatan (PK)
nama_kegiatan
pegawai1
pegawai2

Kunci Masternya : id_pegawai
Kunci Tamu (Foreign Key) : pegawai1, pegawai2

Sebelumnya kita harus memberikan relasi pada kedua tabel ini, PASTIKAN TYPE DATA DAN JUMLAH KARAKTER id_pegawai, pegawai1, pegawai2 HARUS SAMA. Selanjutnya kita buat relasinya, dengan cara masuk ke menu TAB DESIGNER di PhpMyAdmin. Kemudian klik tools buat relasi kemudian pilih Kunci Master (id_pegawai) lalu klik Kunci Tamu Pertama (pegawai1) lalu klik OK. Buat Relasi kembali, pilih Kunci Master (id_pegawai) lalu klik Kunci Tamu Kedua(pegawai2) lalu klik OK. 

Atau bisa juga membuat relasi dengan Relation View, yaitu kita menuju Menu Strukture pada Tabel tb_pegawai.

Nahh, setelah sudah dibuat relasinya tinggal menikmati Mumetnya Gan, wkwkwk. Mungkin sebenarnya gampang tapi sayanya aja yang kurang pinter wkwkwk.

Kita buat function berikut pada controllernya, but wait, tidak perlu saya jelaskan kan cara membuat Controllernya? Wkwk, Langsung kodenya :

public function index()
{
    $this->db->select('u1.nama_pegawai pegawai1, u2.nama_pegawai pegawai2, nama_kegiatan');
    $this->db->from('tb_kegiatan'); 
    $this->db->join('tb_pegawai u1', 'tb_kegiatan.pegawai1=u1.id_pegawai');
    $this->db->join('tb_pegawai u2', 'tb_kegiatan.pegawai2=u2.id_pegawai');
    $this->db->order_by('tb_kegiatan.id_kegiatan','asc');         
    $data['kegiatan']= $this->db->get()->result_array();   
$this->load->view('data_kegiatan',$data);
//var_dump($data); ini buat cek datanya
}

Terus untuk menampilkannya buat sebuah view di folder view ya.. Misal diberi nama data_kegiatan.php.



<table border="2">
<thead>
    <tr>
        <th>No.</th>
        <th>Nama Kegiatan</th>
        <th>Pegawai 1</th>
        <th>Pegawai 2</th>
    </tr>
</thead>
<tbody>
   <?php
    $no = 1;
   
    foreach ($kegiatan as $kegiatan) { ?>
    <tr>
        <td><?= $no++ ?></td>
        <td><?= $kegiatan['nama_kegiatan'] ?></td>
        <td><?= $kegiatan['pegawai1'] ?></td>
        <td><?= $kegiatan['pegawai2'] ?></td>
    </tr>
    <?php }  ?>
</tbody>
</table>
  

Kemudian, silahkan akses controllernya gaes!
And See the Result! Tadaaaa


Udahh Ah gitu aja.

Post a Comment

1 Comments