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().
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.