CodeIgniter Active Record: Kueri Penyisipan, Pembaruan, dan Penghapusan
⚡ Ringkasan Cerdas
CodeIgniter Active Record adalah pola desain yang memungkinkan model untuk membaca dan menulis ke basis data dengan rantai metode yang sederhana dan aman. Ia mendukung operasi insert, select, update, dan delete di berbagai mesin basis data tanpa perlu menulis ulang kode, dan ia memparameterisasi input untuk mencegah injeksi SQL.

Data adalah urat nadi sebagian besar aplikasi. Data perlu disimpan agar dapat dianalisis untuk memberikan wawasan dan memfasilitasi keputusan bisnis. Data biasanya disimpan dalam basis data. Di antara kekhawatiran utama saat berinteraksi dengan basis data adalah keamanan, kemudahan akses, dan implementasi Structured Query Language (SQL) yang spesifik untuk vendor basis data.
Active Record adalah pola desain yang memudahkan interaksi dengan basis data secara aman dan efisien. Active Record memiliki keunggulan sebagai berikut:
- Sisipkan, perbarui, dan hapus data dengan rangkaian metode sederhana.
- Mengirimkan input pengguna secara aman menggunakan parameter.
- Memungkinkan Anda bekerja dengan beberapa mesin basis data seperti MySQL dan SQL Server tanpa perlu menulis ulang kode aplikasi.
- CodeIgniter menggunakan driver khusus untuk setiap mesin basis data di latar belakang.
Cara Menggunakan Active Record: Contoh
Dalam tutorial ini, kita akan menggunakan contoh basis data dengan dua tabel, satu berisi pesanan dan yang lainnya berisi detail. Tutorial ini mengasumsikan Anda memiliki MySQL Basis data telah terpasang dan berjalan. Jalankan skrip berikut untuk membuat basis data tutorial:
CREATE SCHEMA ci_active_record; USE ci_active_record; CREATE TABLE `order_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) DEFAULT NULL, `item` varchar(245) DEFAULT NULL, `quantity` int(11) DEFAULT '0', `price` decimal(10,2) DEFAULT '0.00', `sub_total` decimal(10,2) DEFAULT '0.00', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1; CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` timestamp NULL DEFAULT NULL, `customer_name` varchar(245) DEFAULT NULL, `customer_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;
Kode di atas membuat basis data bernama ci_active_record dan dua tabel, orders dan order_details. Hubungan antara kedua tabel tersebut didefinisikan oleh kolom id di orders dan order_id di order_details.
CodeKonfigurasi Basis Data Igniter
Sekarang kita akan mengkonfigurasi aplikasi kita untuk berkomunikasi dengan basis data ini. Buka file konfigurasi basis data yang terletak di application/config/database.php dan temukan baris-baris berikut:
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Perbarui kode di atas menjadi seperti berikut:
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Catatan: Anda perlu mengganti nama pengguna dan kata sandi dengan yang sesuai dengan milik Anda. MySQL konfigurasi.
Selain detail konfigurasi basis data, kita juga perlu memberi tahu CodeIgniter akan memuat pustaka basis data saat dimuat.
Langkah 1) Buka file berikut: application/config/autoload.php.
Langkah 2) Temukan pustaka kunci array $autoload dan muat pustaka basis data seperti yang ditunjukkan di bawah ini:
$autoload['libraries'] = array('database');
Sini:
- Kode di atas memuat pustaka basis data saat aplikasi dimulai.
CodeIgniter Sisipkan Rekaman Aktif
Untuk keperluan pengujian, kita akan membuat controller dan mendefinisikan rute untuk berinteraksi dengan aplikasi kita melalui Active Record. Buat file baru application/controllers/ActiveRecordController.php dan tambahkan kode berikut:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ActiveRecordController extends CI_Controller { public function store_order(){ $data = [ 'date' => '2018-12-19', 'customer_name' => 'Joe Thomas', 'customer_address' => 'US' ]; $this->db->insert('orders', $data); echo 'order has successfully been created'; } }
Sini:
- $data = […] mendefinisikan variabel array data yang menggunakan nama kolom tabel database sebagai kunci array dan menetapkan nilai ke dalamnya.
- $this->db->insert('orders', $data); memanggil metode insert dari pustaka basis data, dengan meneruskan nama tabel orders dan variabel array $data. Baris ini menghasilkan pernyataan SQL INSERT menggunakan kunci array sebagai nama field dan nilai array sebagai nilai yang akan disisipkan.
Setelah membuat metode controller, kita perlu membuat rute yang akan kita panggil untuk mengeksekusinya. Buka application/config/routes.php dan tambahkan baris berikut:
$route['ar/insert'] = 'activerecordcontroller/store_order';
Sini:
- Kita mendefinisikan sebuah rute ar/insert yang memanggil metode store_order dari ActiveRecordController.
Sekarang mari kita mulai server web untuk menguji metode kita. Jalankan perintah berikut untuk memulai server PHP bawaan:
cd C:\Sites\ci-app php -S localhost:3000
Sini:
- Perintah di atas akan masuk ke direktori proyek dan memulai server bawaan pada port 3000.
Muat yang berikut ini URL ke dalam browser Anda: http://localhost:3000/ar/insertAnda akan mendapatkan hasil berikut:
order has successfully been created
Buka MySQL Gunakan tutorial basis data dan periksa tabel pesanan. Anda akan melihat baris yang baru dibuat, seperti yang ditunjukkan pada gambar di bawah ini:
CodeIgniter Pilih Rekam Aktif
Pada bagian ini, kita akan melihat cara membaca data dalam basis data dan menampilkannya di peramban web sebagai daftar tak berurutan. Tambahkan metode berikut ke ActiveRecordController:
public function index() { $query = $this->db->get('orders'); echo "<h3>Orders Listing</h3>"; echo "<ul>"; foreach ($query->result() as $row) { echo "<li>$row->customer_name</li>"; } echo "</ul>"; }
Sini:
- $query = $this->db->get('orders'); menjalankan kueri select terhadap tabel orders, memilih semua kolom.
- gema “ Daftar Pesanan ”; menampilkan judul HTML.
- gema “ ”; mencetak tag pembuka untuk daftar HTML yang tidak terurut.
- foreach ($query->result() as $row) {…} mengulang melalui hasil yang dikembalikan dari basis data, dan echo “ $baris->nama_pelanggan ”; mencetak customer_name.
Sebelum Anda memuat URLAnda dapat menambahkan beberapa catatan lagi ke basis data. Sekarang mari kita definisikan rute untuk kueri SELECT. Buka application/config/routes.php dan tambahkan rute berikut:
$route['ar'] = 'activerecordcontroller';
Sini:
- Rute `ar` mengarah ke metode `index` dari kelas `ActiveRecordController`. Ini adalah pengaturan default, itulah sebabnya kita tidak menentukan metode `index`, seperti yang kita lakukan untuk rute yang menyisipkan data.
Dengan asumsi server web sudah berjalan, muat yang berikut ini. URL: http://localhost:3000/arAnda akan melihat hasil yang mirip dengan berikut ini di peramban web Anda:
CodePembaruan Igniter Active Record
Pada bagian ini, kita akan membahas cara menggunakan Active Record untuk memperbarui basis data. Misalkan kita ingin memperbarui nama pelanggan Joe Thomas menjadi Joe. Tambahkan metode berikut ke kelas ActiveRecordController:
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
Sini:
- $data = […] mendefinisikan kolom dan nilai yang ingin kita perbarui dalam tabel basis data.
- $this->db->where('id', 1); menetapkan klausa where dari kueri pembaruan.
- $ini->db->update('pesanan', $data); menghasilkan kueri pembaruan SQL dan menjalankannya terhadap database kami.
Kode di atas menghasilkan pernyataan SQL berikut:
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Sekarang mari kita perbarui application/config/routes.php dan tambahkan rute berikut:
$route['ar/update'] = 'activerecordcontroller/update_order';
Simpan perubahan dan muat yang berikut ini URL di peramban web:
Sekarang mari kita tampilkan catatan basis data dan lihat apakah perubahan tersebut telah berlaku.
Seperti yang Anda lihat pada gambar di atas, catatan pertama telah diperbarui dari Joe Thomas menjadi Joe.
CodeIgniter Hapus Catatan Aktif
Sekarang kita akan menghapus sebuah data dari basis data. Kita akan menghapus data dengan id 3. Tambahkan metode berikut ke ActiveRecordController:
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
Sini:
- $this->db->where('id', 3); mengatur klausa where.
- $this->db->delete('orders'); menghapus baris dalam tabel orders berdasarkan kriteria yang ditetapkan menggunakan klausa where.
Untuk menjalankan kode di atas, muat hal-hal berikut ini. URL di peramban web Anda: http://localhost:3000/ar/delete.




