Study
CodeIgniter

Join Antar Tabel dengan Query Builder

Penjelasan

Berbeda dengan Eloquent di Laravel yang punya hasMany()/belongsTo() bawaan, CodeIgniter TIDAK punya sistem relasi model built-in — untuk mengambil data dari beberapa tabel sekaligus, kamu menulis JOIN manual lewat Query Builder memakai method join().

Contoh Konsep

<?php

$produkModel = new ProdukModel();

$produkDenganKategori = $produkModel
    ->select('produk.nama, produk.harga, kategori.nama as nama_kategori')
    ->join('kategori', 'kategori.id = produk.kategori_id')
    ->findAll();

foreach ($produkDenganKategori as $item) {
    echo "{$item['nama']} - {$item['nama_kategori']}";
}

Praktikum

Bayangkan tabel artikel (kolom: id, judul, penulis_id) dan tabel penulis (kolom: id, nama). Tulis query lewat ArtikelModel yang mengambil judul artikel beserta nama penulisnya memakai join().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Karena tidak ada eager loading otomatis seperti Eloquent, hati-hati dengan masalah N+1 query di CodeIgniter — kalau kamu mengambil daftar produk lalu query kategori SATU PER SATU di dalam loop, itu jauh lebih lambat dibanding satu query join() sekaligus seperti contoh di atas.