Selamat datang di warungbelajar, dalam tutorial kali ini kita akan melanjutkan pembahasan mengenai codeigniter, kali ini kita bahas mengenai query builder di codeigniter.
Query Builder adalah class yang disediakan oleh codeigniter, yang digunakan untuk berkomunikasi dengan database, dengan adanya query builder, anda dapat melakukan perintah seperti insert, select, update & delete, dengan perintah query yang lebih minimal.
Baik untuk belajar mengenai query builder, kita harus menyiapkan project codeigniter terlebih dahulu ya..
saya asumsikan teman – teman sudah menyiapkan project codeigniter, dalam contoh ini projectnya saya beri nama “belajardatabase“.
untuk tutorial instalasi bisa buka tutorial kita sebelumnya : Tutorial Instalasi Codeigniter
berikutnya silahkan gunakan perintah sql ini untuk membuat database :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | -- phpMyAdmin SQL Dump -- version 4.9.0.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Apr 10, 2020 at 03:24 PM -- Server version: 10.4.6-MariaDB -- PHP Version: 7.3.9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `db_siswa` -- CREATE DATABASE IF NOT EXISTS `db_siswa` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `db_siswa`; -- -------------------------------------------------------- -- -- Table structure for table `tb_kelas` -- CREATE TABLE `tb_kelas` ( `kd_kelas` int(11) NOT NULL, `kelas` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_kelas` -- INSERT INTO `tb_kelas` (`kd_kelas`, `kelas`) VALUES (1, '3MM1'), (2, '3MM2'), (3, '3MM3'); -- -------------------------------------------------------- -- -- Table structure for table `tb_siswa` -- CREATE TABLE `tb_siswa` ( `kd_siswa` int(11) NOT NULL, `kd_kelas` int(11) NOT NULL, `nama` varchar(255) NOT NULL, `alamat` varchar(255) NOT NULL, `tgl_lahir` date NOT NULL, `tempat_lahir` varchar(255) NOT NULL, `jenis_kelamin` enum('pria','wanita') NOT NULL, `berat_badan` int(11) NOT NULL, `tinggi_badan` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_siswa` -- INSERT INTO `tb_siswa` (`kd_siswa`, `kd_kelas`, `nama`, `alamat`, `tgl_lahir`, `tempat_lahir`, `jenis_kelamin`, `berat_badan`, `tinggi_badan`) VALUES (1, 1, 'Andi Susanto', 'Jl. Gunung Anyar', '1994-04-02', 'sidoarjo', 'pria', 60, 160), (2, 2, 'Budi Nugroho', 'Jl. Rungkut', '1994-05-10', 'surabaya', 'pria', 55, 170), (3, 1, 'Cika', 'Gunung Anyar', '1994-12-09', 'yogya', 'wanita', 60, 160), (4, 1, 'Dika', 'Wonocolo', '1994-10-12', 'sidoarjo', 'pria', 50, 160), (5, 3, 'Erika', 'Medokan Ayu', '1994-08-10', 'malang', 'wanita', 60, 160), (6, 2, 'Fita', 'Rungkut Menanggal', '1994-10-12', 'sidoarjo', 'wanita', 60, 150); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_kelas` -- ALTER TABLE `tb_kelas` ADD PRIMARY KEY (`kd_kelas`); -- -- Indexes for table `tb_siswa` -- ALTER TABLE `tb_siswa` ADD PRIMARY KEY (`kd_siswa`), ADD KEY `kd_kelas` (`kd_kelas`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_kelas` -- ALTER TABLE `tb_kelas` MODIFY `kd_kelas` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; -- -- AUTO_INCREMENT for table `tb_siswa` -- ALTER TABLE `tb_siswa` MODIFY `kd_siswa` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; -- -- Constraints for dumped tables -- -- -- Constraints for table `tb_siswa` -- ALTER TABLE `tb_siswa` ADD CONSTRAINT `tb_siswa_ibfk_1` FOREIGN KEY (`kd_kelas`) REFERENCES `tb_kelas` (`kd_kelas`); COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
jangan lupa untuk setting codeigniter agar dapat berkomunikasi dengan database, bisa membaca tutorial kita sebelumnya : cara menghubungkan codeigniter dengan database
baik saya asumsikan, teman – teman sudah install codeigniter, sudah import database, dan database sudah dikoneksikan di codeigniter.
berikutnya kita buat controller untuk bahan belajarnya, dalam contoh ini kita buat controller dengan nama Siswa.php, posisi dari file controller ada di folder application/controllers
1 2 3 4 5 6 7 8 9 10 | <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function index() { } } |
kita buat function index, didalam controller Siswa, baik kita mulai belajar query builder.
Selecting Data
Untuk bagian awal, kita bahas bagaimana kita menampilkan data, perintahnya sebagai berikut, kita tuliskan di bagian function index di controller siswa.php
Menampilkan seluruh data pada tabel tertentu
1 2 3 4 5 6 7 | public function index() { $query = $this->db->get('tb_siswa'); echo "<pre>"; print_r($query->result()); echo "</pre>"; } |
Keterangan :
perintah query builder :
1 | $this->db->get('tb_siswa'); |
Untuk perintah di line 4 – 6 hanya digunakan untuk menampilkan data saja, perintah ini akan kita gunakan di beberapa perintah query builder lainnya, dan tidak akan kita jelaskan lagi ya teman – teman.
Menampilkan data dengan batas limit
berikutnya kita akan contohkan menampilkan data dengan batas limit tertentu, perintahnya adalah seperti berikut ini :
1 2 3 4 5 6 7 | public function index() { $query = $this->db->get('tb_siswa',2,1); echo "<pre>"; print_r($query->result()); echo "</pre>"; } |
Keterangan :
perintah query builder
1 | $this->db->get('tb_siswa',2,1); |
memiliki arti menampilkan data di tabel siswa sebanyak 2 data, yang dan dimulai setelah data ke satu / pertama, jika dalam query sql biasa adalah seperti berikut ini :
1 | SELECT * FROM tb_siswa LIMIT 2,1 |
Menampilkan data dengan pengecekan kondisi / where
Berikutnya kita akan bahas bagaimana menuliskan query untuk mendapatkan data berdasarkan kondisi tertentu, atau biasa kenal dengan perintah where
format perintahnya adalah seperti berikut ini :
1 | $this->db->get_where('mytable', array('id' => $id), $limit, $offset); |
sehingga jika diimplementasikan di kasus ini :
1 2 3 4 5 6 7 | public function index() { $query = $this->db->get_where('tb_siswa',array('jenis_kelamin'=>'pria')); echo "<pre>"; print_r($query->result()); echo "</pre>"; } |
Keterangan :
perintah query builder diatas
1 | $this->db->get_where('tb_siswa',array('jenis_kelamin'=>'pria')); |
memiliki arti untuk mencari data di tabel siswa, yang jenis_kelamin = pria, jika di perintah sql manual seperti berikut :
1 | select * from tb_siswa where jenis_kelamin='pria' |
Menampilkan hanya beberapa kolom dari tabel
Berikutnya kita akan belajar untuk menuliskan query builder yang digunakan untuk menampilkan hanya beberapa kolom, format perintahnya adalah sebagai berikut :
1 2 | $this->db->select('kolom_1,kolom_2'); $query = $this->db->get('nama_tabel'); |
Anda juga dapat menampilkan seluruh nilai pada kolom, dengan menuliskan karakter * didalam bagian select.
1 2 | $this->db->select('*'); $query = $this->db->get('nama_tabel'); |
Jika diimplementasikan maka perintahnya adalah seperti berikut :
1 2 3 4 5 6 7 8 | public function index() { $this->db->select('nama, alamat, tempat_lahir,tgl_lahir'); $query = $this->db->get('tb_siswa'); echo "<pre>"; print_r($query->result()); echo "</pre>"; } |
Keterangan :
dari perintah diatas maka hasilnya akan menampilkan kolom nama, alamat, tempat_lahir, dan tanggal lahir saja dari tabel siswa.
Menuliskan query manual dibagian select
Berikutnya kita akan belajar untuk membuat query manual dengan perintah select, sebagai contoh kita akan menuliskan query untuk menampilkan rata – rata tinggi badan siswa dengan jenis kelamin laki – laki, jika kita tuliskan query manual perintahnya adalah sebagai berikut :
1 | SELECT AVG(tinggi_badan) AS rata_rata_tinggi_badan FROM tb_siswa WHERE jenis_kelamin='pria' |
baik jika dalam query builder, perintahnya adalah sebagai berikut :
1 2 3 | $this->db->select("(SELECT AVG(tinggi_badan) FROM tb_siswa WHERE jenis_kelamin='pria') AS tinggi_badan",FALSE); $query = $this->db->get('tb_siswa'); print_r($query->row()); |
Keterangan :
jika dijalankan akan menampilkan tulisan
1 | stdClass Object ( [tinggi_badan] => 163.3333 ) |
yang merupakan rata – rata tinggi badan siswa dengan jenis kelamin pria
pada perintah diatas, kita menuliskan perintah $query->row(); karena pengembalian datanya hanya satu sehingga perlu kita menuliskan perintah tersebut.
jika anda ingin menuliskan hasilnya saja bisa meggunakan perintah berikut ini :
1 2 3 4 5 6 | public function index() { $this->db->select("(SELECT AVG(tinggi_badan) FROM tb_siswa WHERE jenis_kelamin='pria') AS tinggi_badan",FALSE); $query = $this->db->get('tb_siswa')->row(); echo $query->tinggi_badan; } |
Keterangan :
dengan perintah diatas akan menampilkan tulisan : 163.3333
line 3 kita menuliskan query builder dengan perintah select, perintah select memiliki 2 parameter :
parameter pertama adalah query yang ditulis, dalam hal ini perintah untuk mencari rata – rata tinggi badan dari data di tabel siswa dengan jenis kelamin pria
parameter kedua bersifat optional, bisa diisi oleh TRUE, ataupun FALSE, jika diisi dengan nilai FALSE, maka codeigniter akan akan membatasi nama dari tabel anda.
Menampilkan nilai tertinggi dengan perintah select_max
Berikutnya untuk menampilkan nilai tertinggi, bisa menggunakan perintah select_max, contoh format perintahnya adalah sebagai berikut :
1 2 | $this->db->select_max('tinggi_badan'); $query = $this->db->get('tb_siswa'); |
Perintah diatas sama seperti perintah query manual :
1 | SELECT MAX(tinggi_badan) AS tinggi_badan FROM tb_siswa |
selain format diatas, anda juga bisa menggunakan format yang menyebutkan alias dari nama kolom pada parameter kedua, contohnya sebagai berikut :
1 2 | $this->db->select_max('tinggi_badan','max_tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah diatas sama seperti query manual seperti berikut ini :
1 | select max(tinggi_badan) as max_tinggi_badan from tb_siswa |
Menampilkan nilai tertinggi dengan perintah select_min
Berikutnya kita akan membahas bagaimana cara menampilkan nilai terendah, dengan menggunakan perintah select_min, contoh formatnya adalah sebagai berikut :
1 2 | $this->db->select_min('tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah itu sama seperti query manual :
1 | SELECT MIN(tinggi_badan) FROM tb_siswa |
selain format diatas, anda juga bisa menggunakan format yang menyebutkan alias dari nama kolom para parameter kedua, contohnya sebagai berikut :
1 2 | $this->db->select_min('tinggi_badan','min_tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah itu sama seperti query manual seperti :
1 | SELECT MIN(tinggi_badan) AS min_tinggi_badan FROM tb_siswa |
Menampilkan nilai rata rata dengan menggunakan select_avg
berikutnya kita akan belajar untuk menampilkan nilai rata – rata dengan menggunakan perintah select_avg, contoh formatnya adalah sebagai berikut :
1 2 | $this->db->select_avg('tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah diatas sama seperti perintah manual sql seperti berikut ini :
1 | select avg(tinggi_badan) from tb_siswa |
selain format diatas, anda juga bisa menggunakan format yang menyebutkan alias dari nama kolom para parameter kedua, contohnya sebagai berikut :
1 2 | $this->db->select_avg('tinggi_badan','avg_tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah diatas sama seperti perintah manual sql sebagai berikut :
1 | select avg(tinggi_badan) as avg_tinggi_badan from tb_siswa |
Menjumlahkan nilai kolom dengan menggunakan select_sum
berikutnya untuk menjumlahkan nilai dari kolom, anda bisa menggunakan perintah select_sum, berikut ini adalah contoh format perintahnya :
1 2 | $this->db->select_sum('tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah diatas sama seperti perintah query manual seperti berikut ini :
1 | SELECT SUM(tinggi_badan) FROM tb_siswa |
selain format diatas, anda juga bisa menggunakan format yang menyebutkan alias dari nama kolom para parameter kedua, contohnya sebagai berikut :
1 2 | $this->db->select_sum('tinggi_badan','sum_tinggi_badan'); $query = $this->db->get('tb_siswa'); |
perintah diatas sama seperti perintah query manual seperti berikut ini :
1 | select sum(tinggi_badan) as sum_tinggi_badan from tb_siswa |
Menggunakan perintah from untuk menentukan tabel yang datanya ditampilkan
Anda juga dapat menggunakan perintah from untuk menentukan tabel mana yang datanya akan ditampilkan, contoh format perintahnya adalah sebagai berikut :
1 2 3 | $this->db->select('name, alamat, tgl_lahir, tempat_lahir'); $this->db->from('tb_siswa'); $query = $this->db->get(); |
perintah diatas sama dengan query manual seperti berikut ini :
1 | select name,alamat,tgl_lahir,tempat_lahir from tb_siswa |
Menggunakan Perintah Join di Query Builder
Berikutnya kita akan belajar bagaimana menggunakan perintah join di codeigniter, contoh format perintahnya adalah sebagai berikut ini :
1 2 3 4 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->join('tb_kelas','tb_siswa.kd_kelas=tb_kelas.kd_kelas'); $query = $this->db->get(); |
Keterangan :
dalam contoh perintah diatas kita melakukan join dari tabel tb_siswa dengan tabel tb_kelas, dengan relasi di kolom kd_kelas, dan juga kita menampilkan seluruh kolom yang ada di 2 tabel tersebut
jika kita menuliskan dalam query manual kurang lebih seperti berikut ini :
1 | SELECT * FROM tb_siswa JOIN tb_kelas ON tb_siswa.kd_kelas = tb_kelas.kd_kelas |
Mencari spesifik data dengan menggunakan perintah where
Pada beberapa pembahasan sebelumnya kita sudah membahas bagaimana menuliskan perintah where dengan menggunakan query builder, dalam pembahasan kali ini kita akan belajar beberapa perintah yang bisa kita tuliskan untuk keperluan mencari data menggunakan where.
Mencari data dengan keyword sederhana.
Contohnya kita ingin mencari data siswa berdasarkan jenis_kelamin = pria, dan tempat_lahir adalah sidoarjo, anda bisa menggunakan perintah sebagai berikut :
1 2 3 4 5 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where('jenis_kelamin','pria'); $this->db->where('tempat_lahir','sidoarjo'); $query = $this->db->get(); |
Keterangan :
kita bisa menggunakan perintah
1 2 | $this->db->where('jenis_kelamin','pria'); $this->db->where('tempat_lahir','sidoarjo'); |
peritah tersebut sama dengan query manual seperti berikut :
1 | SELECT * FROM tb_siswa WHERE jenis_kelamin='pria' AND tempat_lahir='sidoarjo' |
Menggunakan Kustom dari bagian key / value
Semisal kita ingin mencari, data siswa yang memiliki tinggi badan, lebih dari 160, anda bisa menggunakan contoh perintah sebagai berikut :
1 2 3 4 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where('tinggi_badan >',160); $query = $this->db->get(); |
Keterangan :
pada bagian where itu defaultnya adalah menggunakan operator =, jika anda menginginkan menggunakan operator lainnya, bisa anda tuliskan pada parameter pertama pada bagian perintah where seperti contoh diatas kita gunakan operator lebih besar dari sama dengan.
perintah diatas sama dengan query manual :
1 | select * from tb_siswa where tinggi_badan > 160; |
Menggunakan Associative array pada perintah where
Anda juga dapat menuliskan keyword dan value dibagian where dengan menggunakan associative array, jika memang anda membutuhkan beberapa perintah where.
baik dalam contoh ini kita akan coba mencari data di tabel tb_siswa yang jenis_kelamin=pria, dan tempat_lahir di sidoarjo, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 | $search = array('jenis_kelamin'=>'pria','tempat_lahir'=>'sidoarjo'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where($search); $query = $this->db->get(); |
Keterangan :
Anda tinggal tuliskan array, lalu pada bagian perintah where di parameter pertama tuliskan variabel yang berisi array, dalam contoh ini adalah search.
Anda juga bisa menggunakan custom operator dibagian where, contohnya kita mencari data siswa yang tinggi badannya adalah 150, dan berat badannya kurang dari 60, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 | $search = array('tinggi_badan >'=>150,'berat_badan <'=> 60); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where($search); $query = $this->db->get(); |
Custom string di where
Berikutnya anda bisa menuliskan custom string untuk melakukan pencarian, contohnya anda ingin mencari data siswa yang jenis_kelamin ‘wanita’ dan tempat_lahir bukan di malang, contoh perintahnya adalah sebagai berikut ini :
1 2 3 4 5 | $search = "jenis_kelamin='wanita' and tempat_lahir != 'malang'"; $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where($search); $query = $this->db->get(); |
Keterangan :
dalam contoh diatas kita membuat variabel $search yang berisi string pencarian yang ditulis secara custom, dan nantinya variabel $search kita tuliskan dibagian perintah where.
Menuliskan perintah or where di query builder
Berikutnya kita akan menuliskan perintah or_where, untuk menuliskan perintah or dibagian where di SQL, baik dalam contoh ini kita akan mencari data siswa yang jenis kelaminnya adalah wanita, atau tempat_lahirnya adalah surabaya, perintahnya adalah sebagai berikut :
1 2 3 4 5 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where('jenis_kelamin','wanita'); $this->db->or_where('tempat_lahir','surabaya'); $query = $this->db->get(); |
Keterangan :
kita bisa menggunakan perintah or_where untuk membuat or dibagian where, perintah diatas sama dengan query manual SQL seperti berikut ini :
1 | SELECT * FROM tb_siswa WHERE jenis_kelamin='wanita' OR tempat_lahir = 'surabaya' |
Menggunakan perintah where in di query builder
Berikutnya kita juga bisa menggunakan perintah where_in di query builder di codeigniter, contohnya kita akan mencari data siswa yang tempat_lahirnya adalah di sidoarjo, surabaya, dan malang, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 | $search = array('sidoarjo','surabaya','malang'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where_in('tempat_lahir',$search); $query = $this->db->get(); |
Keterangan :
kita membuat variabel $search yang berisi array dengan value (‘sidoarjo’,’surabaya’,’malang’), berikutnya variabel ini kita gunakan di bagian perintah where_in.
perintah where_in untuk parameter pertama, adalah kolom yang akan dicari nilainya, dan parameter kedua berisi array yang nilainya akan dibandingkan dengan nilai di kolom yang kita tulis di parameter pertama, dalam contoh ini adalah variabel $search
Menggunakan perintah or_where_in di Query Builder
Berikutnya kita akan belajar untuk menggunakan perintah or_where_in, perintah ini adalah gabungan dari perintah or_where dan where_in, dalam contoh kita akan mencari data siswa yang memiliki tinggi badan > 150 , atau tempat_lahirnya di sidoarjo dan surabaya, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 | $search = array('sidoarjo','surabaya'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where('tinggi_badan >',150); $this->db->or_where_in('tempat_lahir',$search); |
Keterangan :
Perintah diatas, kita menggunakan perintah or_where_in, dimana untuk bagian array pencarian kita sudah buat dibagian variabel $search.
Perintahnya query manual adalah sebagai berikut :
1 | SELECT * FROM tb_siswa WHERE tinggi_badan > 150 OR tempat_lahir IN ('sidoarjo','surabaya') |
Menggunakan perintah where_not_in
Perintah ini merupakan gabungan dari perintah where_not dan where_in, sebagai contoh kita akan mencari data siswa yang tempat_lahirnya bukan di sidoarjo dan surabaya, contoh perintahnya adalah sebagai berikut :
1 2 3 4 5 | $search = array('sidoarjo','surabaya'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where_not_in('tempat_lahir',$search); $query = $this->db->get(); |
Keterangan :
Jika dijalankan akan mencari data siswa yang tempat_lahirnya bukan di sidoarjo, dan disidoarjo, perintah diatas sama seperti query manualnya adalah sebagai berikut :
1 | SELECT * FROM tb_siswa WHERE tempat_lahir NOT IN ('sidoarjo','surabaya') |
Perintah or_where_not_in
Perintah ini gabungan antara or_where, where_not_in, semisal kita ingin mencari data siswa yang tinggi badannya diatas > 160 atau tempat lahirnya bukan di sidoarjo dan surabaya, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 6 | $search = array('sidoarjo','surabaya'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->where('tinggi_badan >',160); $this->db->or_where_not_in('tempat_lahir',$search); $query = $this->db->get(); |
Keterangan :
kita menggunakan perintah or_where_not_in, di parameter pertama merupakan nama kolomnya yaitu tempat_lahir, dan parameter kedua adalah array yang berisi data yang akan dicek di kolom pada parameter pertama, dalam contoh ini adalah variabel $search
query manual dari perintah diatas adalah sebagai berikut :
1 | SELECT * FROM tb_siswa WHERE tinggi_badan > 160 OR tempat_lahir NOT IN ('sidoarjo','surabaya') |
Menggunakan Perintah LIKE di Query Builder
Berikutnya kita akan bahas mengenai penggunaan perintah LIKE di query builder, seperti yang telah anda ketahui perintah LIKE digunakan untuk mencari data berdasarkan pola dari string yang anda inginkan, beberapa contoh penggunaan like di query builder antara lain.
Like dengan key / value sederhana
Semisal anda ingin mencari data di tabel tb_siswa yang alamatnya ada string ‘Gunung’, maka contoh perintah penggunaannya adalah sebagai berikut :
1 2 3 4 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->like('alamat','Gunung'); $query = $this->db->get(); |
Perintah diatas, sama seperti query manual seperti berikut ini :
1 | SELECT * FROM tb_siswa WHERE alamat LIKE '%Gunung%' ESCAPE '!' |
Beberapa pola like yang bisa anda gunakan antara lain adalah :
1 2 3 4 | $this->db->like('alamat', 'Gunung', 'before'); // Produces: WHERE `alamat` LIKE '%Gunung' ESCAPE '!' $this->db->like('alamat', 'Gunung', 'after'); // Produces: WHERE `alamat` LIKE 'Gunung%' ESCAPE '!' $this->db->like('alamat', 'Gunung', 'none'); // Produces: WHERE `alamat` LIKE 'Gunung' ESCAPE '!' $this->db->like('alamat', 'Gunung', 'both'); // Produces: WHERE `alamat` LIKE '%Gunung%' ESCAPE '!' |
jadi anda bisa menuliskan dibagian parameter kedua, beberapa value yang bisa anda gunakan adalah :
before
after
none
both
Like dengan Associative Array
Anda bisa menuliskan beberapa nilai dibagian like dengan menggunakan associative array, contohnya penggunaannya adalah sebagai berikut :
1 2 3 4 5 | $like = array('alamat'=>'Gunung','tempat_lahir'=>'sido'); $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->like($like); $query = $this->db->get(); |
Keterangan :
Perintah diatas digunakan untuk mencari data siswa yang alamatnya ada string ‘Gunung’ dan tempat_lahir ada string ‘sido’, polanya sama dengan bagian where, kita tinggal buat array yang nantinya digunakan dibagian perintah like.
perintah diatas sama seperti query manual seperti berikut ini :
1 | SELECT * FROM tb_siswa WHERE alamat LIKE '%Gunung%' AND tempat_lahir LIKE '%sido%' |
Perintah or_like
perintah or_like digunakan untuk membuat perintah like dipadukan dengan perintah or, semisal perintahnya adalah sebagai berikut :
1 2 3 4 5 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->like('alamat','Gunung'); $this->db->or_like('tempat_lahir','sido'); $query = $this->db->get(); |
Keterangan
Perintah diatas digunakan untuk memadukan beberapa perintah like, dengan kondisi or
Perintah diatas jika sama seperti query manual seperti berikut :
1 | SELECT * FROM tb_siswa WHERE alamat LIKE '%Gunung%' OR tempat_lahir LIKE '%sido%' |
Perintah Not Like
Perintah ini digunakan untuk membuat perintah not like di query builder, contoh perintahnya adalah sebagai berikut :
1 2 3 4 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->not_like('tempat_lahir','sido'); $query = $this->db->get(); |
perintah diatas jika kita tuliskan dengan query SQL manual adalah sebagai berikut ini :
1 | SELECT * FROM tb_siswa WHERE tempat_lahir NOT LIKE '%sido%' |
Perintah or_not_like
Berikutnya kita juga bisa menggunakan perintah or_not_like, ini adalah perintah yang menggabungkan antara or_like dan not_like, contoh perintahnya adalah sebagai berikut :
1 2 3 4 5 | $this->db->select('*'); $this->db->from('tb_siswa'); $this->db->like('alamat','Gunung'); $this->db->or_not_like('tempat_lahir','sido'); $query = $this->db->get(); |
Perintah diatas sama seperti query SQL manual seperti berikut ini :
1 | SELECT * FROM tb_siswa WHERE alamat LIKE '%Gunung%' OR tempat_lahir NOT LIKE '%sido%' |
Perintah Group By di Query Builder
Berikutnya kita akan belajar mengenai bagaimana cara untuk membuat perintah group by di dalam Query Builder, dalam contoh ini kita akan mengelompokkan siswa berdasarkan jenis kelamin, untuk menghitung siswa dengan jenis kelamin pria dan wanita, perintah query buildernya adalah sebagai berikut :
1 2 3 4 | $this->db->select('jenis_kelamin,count(kd_siswa) as jumlah'); $this->db->from('tb_siswa'); $this->db->group_by('jenis_kelamin'); $query = $this->db->get(); |
Keterangan :
Perintah diatas menggunakan beberapa perintah, kita menuliskan custom query di bagian perintah $this->db->select, untuk menampilkan kolom jenis_kelamin, dan menghitung bagian kd_siswa dengan alias nama jumlah.
Nah Yang membedakan ini adalah dibagian perintah $this->db->group_by, kita menuliskan untuk melakukan group by berdasarkan jenis_kelamin.
Perintah diatas jika kita tulis secara manual query SQL adalah sebagai berikut :
1 | SELECT jenis_kelamin,COUNT(kd_siswa) AS jumlah FROM tb_siswa GROUP BY jenis_kelamin |
Perintah Distinct di Query Builder
Berikutnya kita akan belajar mengenai cara penulisan perintah distinct didalam query builder, contohnya kita akan menampilkan tempat lahir siswa dengan perintah distinct, maka perintah dalam query builder adalah sebagai berikut :
1 2 3 4 | $this->db->select('tempat_lahir'); $this->db->distinct('tempat_lahir'); $this->db->from('tb_siswa'); $query = $this->db->get(); |
Keterangan :
Perintah diatas digunakan untuk menampilkan kolom tempat_lahir, lalu berikutnya kita distinct berdasarkan kolom tempat_lahir, dan kita juga menuliskan mengambil data dari table tb_siswa
Perintah distinct tersebut sama seperti query manual SQL seperti berikut ini :
1 | SELECT DISTINCT(tempat_lahir) FROM tb_siswa |
Order Data di Query Builder
Perintah Order data ini digunakan untuk mengurutkan data hasil query, anda bisa menuliskan perintah query ini didalam query builder, contohnya kita akan menampilkan data siswa dengan mengurutkan berdasarkan kolom tinggi badan DESC, maka perintah query buildernya adalah sebagai berikut :
1 2 3 | $this->db->from('tb_siswa'); $this->db->order_by('tinggi_badan','DESC'); $query = $this->db->get(); |
Keterangan :
Perintah diatas akan menampilkan data di table tb_siswa, dengan mengurutkan berdasarkan tinggi badan secara desc, anda merubah parameter kedua menjadi ASC, tetapi jika anda ingin menggunakan pola ASC anda bisa mengkosongkan bagian parameter kedua dari perintah order_by.
Perintah diatas jika kita tuliskan dengan perintah query SQL manual adalah sebagai berikut :
1 | Select * from tb_siswa order by tinggi_badan desc |
Jika anda ingin menuliskan beberapa perintah order by anda bisa menuliskan seperti berikut :
1 2 3 | $this->db->from('tb_siswa'); $this->db->order_by('tinggi_badan DESC','nama ASC'); $query = $this->db->get(); |
Atau bisa juga menggunakan 2 perintah order by seperti berikut ini :
1 2 3 4 | $this->db->from('tb_siswa'); $this->db->order_by('tinggi_badan','DESC'); $this->db->order_by('nama','ASC'); $query = $this->db->get(); |
Anda juga mengisi parameter kedua pada perintah order by dengan perintah RANDOM, untuk melakukan random terhadap pengurutan data.
1 2 3 | $this->db->from('tb_siswa'); $this->db->order_by('tinggi_badan','RANDOM'); $query = $this->db->get(); |
Perintah Limit di Query Builder
Anda bisa membatasi jumlah data yang ditampilkan, dengan perintah limit di query builder, contohnya anda hanya ingin menampilkan 2 data siswa dari tabel tb_siswa, maka perintahnya adalah sebagai berikut :
1 2 3 | $this->db->from('tb_siswa'); $this->db->limit('2'); $query = $this->db->get(); |
Keterangan :
Perintah diatas kita menuliskan $this->db->limit(‘2’) yang artinya akan membatasi untuk menampilkan data hanya 2 data saja.
Jika kita menggunakan query manual maka perintahnya adalah sebagai berikut :
1 | SELECT * FROM tb_siswa LIMIT 2 |
Selain perintah limit anda juga mengatur dari urutan keberapa data ditampilkan, semisal kita ingin menampilkan 2 data, dan melewati 3 data sebelumnya, maka perintahnya adalah sebagai berikut :
1 2 3 | $this->db->from('tb_siswa'); $this->db->limit('2','3'); $query = $this->db->get(); |
Jika kita menggunakan perintah query SQL manual, maka sebagai berikut :
1 | SELECT * FROM tb_siswa LIMIT 3,2 |
Couting Result di Query Builder
Dengan perintah ini, anda dapat menghitung berapa jumlah data hasil dari query, semisal anda ingin menghitung berapa sih jumlah data di tabel tb_siswa ? , anda bisa menggunakan perintah sebagai berikut :
1 | echo $this->db->count_all_results('tb_siswa'); |
atau anda ingin menghitung jumlah siswa yang berjenis kelamin pria saja, maka perintahnya adalah sebagai berikut :
1 2 3 | $this->db->where('jenis_kelamin', 'pria'); $this->db->from('tb_siswa'); echo $this->db->count_all_results(); |
Anda juga bisa menggunakan perintah count_all untuk mendapatkan jumlah seluruh data pada tabel tertentu, anda bisa menuliskan nama tabel di parameter pertama, contoh perintahnya adalah seperti berikut ini :
1 | echo $this->db->count_all('tb_siswa'); |
Perintah Insert Data di Query Builder
Pada perintah query builder anda juga dapat melakukan menambahkan / insert data ke tabel yang anda inginkan, contoh perintahnya adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11 | $data = array( 'kd_kelas'=>'1', 'nama'=>'gita', 'alamat'=>'sedati gede', 'tgl_lahir'=>'1994-04-04', 'tempat_lahir'=>'sidoarjo', 'jenis_kelamin'=>'pria', 'berat_badan'=>'60', 'tinggi_badan'=>'160' ); $this->db->insert('tb_siswa',$data); |
Keterangan :
Jadi data yang akan ditambahkan harus dibuat berbentuk array, dimana key adalah nama kolom, dan value adalah nilai yang akan dimasukkan di kolom tersebut.
Setelah array kita tata dengan menyesuaikan nama kolom sebagai key, berikutnya kita dapat menggunakan perintah $this->db->insert dimana terdapat 2 parameter, antara lain :
parameter pertama adalah nama tabel, dalam hal ini adalah tb_siswa
parameter kedua adalah variable $data yang telah berisi array.
Anda juga bisa insert data lebih dari satu data, kita bisa menggunakan perintah insert_batch, baik contohnya kita akan insert 2 data sekaligus, perintahnya adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $data = array( array( 'kd_kelas'=>'2', 'nama'=>'hari', 'alamat'=>'pabean', 'tgl_lahir'=>'1994-05-05', 'tempat_lahir'=>'jakarta', 'jenis_kelamin'=>'pria', 'berat_badan'=>'60', 'tinggi_badan'=>'160' ), array( 'kd_kelas'=>'1', 'nama'=>'ikhsan', 'alamat'=>'wonocolo', 'tgl_lahir'=>'1994-06-06', 'tempat_lahir'=>'sidoarjo', 'jenis_kelamin'=>'pria', 'berat_badan'=>'70', 'tinggi_badan'=>'160' ) ); $this->db->insert_batch('tb_siswa',$data); |
Keterangan :
Kita perlu buat array multidimensi yang berisi data siswa yang akan diinsert kedalam tb_siswa.
Fitur Update data di Query Builder
Berikutnya kita akan membahas mengenai bagaima cara melakukan update data melalui query builder, beberapa bagian yang perlu kita persiapkan untuk update data melalui query builder antara lain :
Data apa saja yang perlu diupdate, kita dapat membuat array dengan key adalah kolom, dan value adalah nilai yang akan diupdate.
Kondisi data mana yang perlu diupdate, atau sederhanya adalah bagian where, anda bisa menggunakan array untuk menuliskan kondisi where disini
Bagian terakhir adalah nama tabel tempat data yang akan diupdate
Baik berikutnya sebagai contoh kita akan merubah data siswa :
Nama : Dika Cahyadi
Alamat : Pucang
Tanggal Lahir : 1994-07-07
Untuk data siswa dengan kd_siswa = 4 di tabel tb_siswa, maka perintahnya adalah sebagai berikut :
1 2 3 4 5 6 | $data = array( 'nama'=>'Dika Cahyadi', 'alamat'=>'Pucang', 'tgl_lahir'=>'1994-07-07' ); $this->db->update('tb_siswa',$data,array('kd_siswa'=>'4')); |
Keterangan :
Perubah data kita sudah set dalam bentuk array pada variable $data.
Berikutnya kita gunakan perintah update, didalam perintah update ada 3 parameter yang digunakan yaitu :
Parameter pertama adalah nama tabel dalam contoh ini adalah tb_siswa
Parameter kedua adalah data yang akan diupdate, dalam hal ini adalah variable $data yang telah berisi array
Parameter ketiga adalah kondisi data yang akan diupdate, dalam contoh ini kita gunakan array untuk menyebutkan bahwa kita akan merubah data yang kolom kd_siswa bernilai 4
Jika kita tulis query secara manual maka perintahnya adalah sebagai berikut :
1 | UPDATE tb_siswa SET nama='Dika Cahyadi',alamat='Pucang',tgl_lahir='1994-07-07' WHERE kd_siswa='4' |
Perintah Delete di Query Builder
Untuk melakukan delete data, anda bisa menggunakan perintah query builder, untuk menghapus data menggunakan query builder, anda perlu menuliskan 2 parameter antara lain :
Parameter pertama adalah nama tabel dari data yang ingin dihapus
Parameter kedua adalah kondisi data yang akan dihapus, sederhananya ini adalah bagian where, seperti bagian update, anda bisa menggunakan array dibagian parameter kedua ini
Baik sebagai contoh kita akan menghapus data siswa di tabel tb_siswa dengan kd_siswa = 9, maka perintahnya adalah seperti berikut ini :
1 | $this->db->delete('tb_siswa',array('kd_siswa'=>9)); |
Keterangan :
Kita bisa menggunakan perintah delete, dan menuliskan 2 parameter :
Parameter pertama adalah nama tabel dalam hal ini adalah tb_siswa
Parameter kedua adalah kondisi data mana yang akan dihapus, kita menuliskan array di parameter 2, dalam hal ini memiliki arti menghapus data di tabel tb_siswa yang kolom kd_siswa nilainya adalah 9
Jika kita menuliskan dengan query sql manual adalah sebagai berikut :
1 | DELETE FROM tb_siswa WHERE kd_siswa='9' |
Jadi kurang lebih seperti itu teman – teman pembahasan mengenai query builder di dalam codeigniter, jika ada yang ingin didiskusikan silahkan di kolom komentar, sekian dulu tutorial kali ini, sampai jumpa di tutorial selanjutnya.