CodeDatabase Igniter: Konfigurasi, Perbarui & Hapus Data
⚡ Ringkasan Cerdas
CodeIgniter Database membangun model dan controller untuk pengelola kontak yang didukung oleh MySQLSebuah BaseModel bersama mengimplementasikan operasi insert, read, update, dan delete, dan model turunan Pals dan Cities mewarisinya, sehingga controller menggunakan kembali operasi database yang sama di seluruh aplikasi.
CodeBasis Data Igniter
Pada tutorial sebelumnya, kita telah membahas dasar-dasar tentang CodeIgniter Active Record dan cara menyisipkan, memperbarui, menghapus, dan membaca data dari basis data. Dalam tutorial ini, kita akan membuat model basis data dan menggunakan formulir untuk membuat dan memperbarui data basis data. Jika Anda benar-benar baru dalam bekerja dengan basis data, tutorial ini cocok untuk Anda. CodeIgniter, Anda disarankan untuk membaca tutorial sebelumnya pertama.
CodeKonfigurasi Basis Data Igniter
Kita akan mulai dengan membuat basis data proyek tutorial. Kita akan membuat basis data sederhana untuk mengelola detail kontak, dengan dua tabel bernama pals dan kota tempat mereka tinggal. Hubungan antara pals dan cities adalah satu-ke-satu, dengan id di tabel cities sebagai kunci utama dan city_id sebagai kunci asing di tabel pals.
Jalankan skrip berikut untuk membuat database:
CREATE TABLE `pals` ( `id` int(11) NOT NULL AUTO_INCREMENT, `city_id` int(11) DEFAULT NULL, `contact_name` varchar(245) DEFAULT NULL, `contact_number` varchar(245) DEFAULT NULL, `email_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) );
Sekarang mari kita buat tabel kota-kota:
CREATE TABLE `cities` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) );
CodeModel Basis Data Igniter
Sekarang kita akan membuat model untuk basis data kita. Model adalah bagian M dari MVC. Model ini berkaitan dengan akses data, manipulasi data, dan logika bisnis.
In CodeDi Igniter, setiap model harus mendefinisikan metode yang akan didukungnya. Alih-alih mengulang kode yang sama di setiap model, kita akan memanfaatkan pewarisan dalam pemrograman berorientasi objek dan membuat kelas model induk yang mendefinisikan metode dasar yang ingin kita dukung pada model kita.
Tabel di bawah ini menunjukkan metode yang akan kita tentukan dan bagaimana data akan diakses.
| S / N | metode | Deskripsi |
|---|---|---|
| 1 | __membangun | Mendefinisikan metode konstruktor yang memanggil metode konstruktor induk. |
| 2 | dapat semua | Mengambil semua kolom dan catatan dari basis data tanpa syarat apa pun. |
| 3 | dapatkan_oleh_id | Mengambil satu baris dari basis data menggunakan kunci utama bertipe INT bernama id. |
| 4 | dapatkan_di mana | Mengambil semua kolom dari basis data berdasarkan kriteria yang diberikan. |
| 5 | menyisipkan | Memasukkan data baru ke dalam basis data. |
| 6 | memperbarui | Memperbarui catatan basis data yang sudah ada berdasarkan kunci utama bertipe INT bernama id. |
| 7 | hapus | Menghapus data yang sudah ada dari basis data berdasarkan kunci utama bertipe INT bernama id. |
Gambar berikut menunjukkan diagram kelas dan bagaimana model anak Pals dan Cities berhubungan dengan model induk BaseModel.
Kita akan membuat dua model seperti yang dijelaskan pada gambar di atas. Buat kelas baru bernama BaseModel di application/models/BaseModel.php dan tambahkan kode berikut:
<?php class BaseModel extends CI_Model { protected $table = ''; public function __construct() { parent::__construct(); } public function get_all() { return $this->db->get($this->table) ->result(); } public function get_by_id($id) { return $this->db->get_where($this->table, array('id' => $id)) ->row(); } public function get_where($where) { return $this->db->where($where) ->get($this->table) ->result(); } public function insert($data) { return $this->db->insert($this->table, $data); } public function update($id, $data) { $this->db->where('id', $id); $this->db->update($this->table, $data); } public function delete($id) { $this->db->where('id', $id); $this->db->delete($this->table); } }
Sini:
- `protected $table = ”;` mendefinisikan variabel terlindungi bernama `table`. Variabel ini diisi oleh kelas turunan terkait untuk menentukan tabel mana yang harus diinteraksi oleh metode model dasar.
- public function __construct() {…} mendefinisikan konstruktor dan mengeksekusi konstruktor dari kelas induk CI_Model.
- get_all() {…} menggunakan pustaka basis data dan nilai $table untuk menjalankan kueri SELECT.
- get_by_id($id) {…} mengambil satu baris dan menerima parameter $id dengan tipe data INT.
- get_where($where) {…} mendefinisikan metode get yang memungkinkan Anda untuk menetapkan klausa where.
- insert($data) {…} menerima parameter array $data yang berisi nilai-nilai yang akan ditulis ke dalam basis data.
- update($id, $data) {…} menerima parameter array $data yang berisi nilai-nilai yang akan diperbarui.
- delete($id) {…} menerima parameter $id dengan tipe data INT.
Setelah kita selesai dengan kelas model induk, mari kita buat model Pals kita. Buat file baru di application/models/Pals_model.php dan tambahkan kode berikut:
<?php class Pals_model extends BaseModel { protected $table = 'pals'; public function __construct() { parent::__construct(); } public function get_by_id($id) { $this->db->where('pals.id', $id); $this->db->select('pals.*,cities.name'); $this->db->from('pals'); $this->db->join('cities', 'pals.city_id = cities.id'); $query = $this->db->get(); return $query->row(); } public function get_all() { $this->db->select('pals.*,cities.name'); $this->db->from('pals'); $this->db->join('cities', 'pals.city_id = cities.id'); $query = $this->db->get(); return $query->result(); } }
Sini:
- Kelas Pals_model memperluas BaseModel {…} memperluas model induk BaseModel dan secara otomatis membuat semua metodenya dapat diakses oleh kelas anak.
- protected $table = 'pals'; mendefinisikan nama tabel yang terkait dengan model ini.
- __construct() {…} menginisialisasi konstruktor induk.
- public function get_by_id($id) {…} menimpa get_by_id untuk menyediakan implementasi khusus. Kueri ini menggunakan join untuk mengambil nama kota dari tabel cities.
- public function get_all() {…} menimpa get_all untuk mengimplementasikan kueri gabungan antara tabel pals dan cities.
Buat file baru di application/models/Cities_model.php:
<?php class Cities_model extends BaseModel { protected $table = 'cities'; public function __construct() { parent::__construct(); } }
Sini:
- dilindungi $tabel = 'kota'; mendefinisikan tabel database model.
Seperti yang Anda lihat, pewarisan menghemat banyak waktu kita saat bekerja dengan model di CodeAlat penyala.
Pengontrol Manajer Kontak
Setelah membuat model, mari kita buat controller untuk aplikasi kita. Kita akan memiliki dua controller, Cities dan Contacts. Mari kita mulai dengan Cities. Buat file baru Cities.php di direktori application/controllers dan tambahkan kode berikut:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Cities extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url', 'form'); $this->load->library('form_validation'); $this->load->model('cities_model'); } public function index() { $header['title'] = 'Cities Listing'; $data['pals'] = $this->cities_model->get_all(); $this->load->view('header',$header); $this->load->view('cities/index', $data); $this->load->view('footer'); } public function create() { $header['title'] = 'Create City'; $this->load->view('header',$header); $this->load->view('cities/create'); $this->load->view('footer'); } public function store() { $rules = array( array( 'field' => 'name', 'label' => 'City Name', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == TRUE) { $data = array('name' => $this->input->post('name')); $this->cities_model->insert($data); redirect(base_url('cities')); } else { $header['title'] = 'Create City'; $this->load->view('header',$header); $this->load->view('cities/create'); $this->load->view('footer'); } } public function edit($id) { $header['title'] = 'Edit City'; $data['city'] = $this->cities_model->get_by_id($id); $this->load->view('header', $header); $this->load->view('cities/edit', $data); $this->load->view('footer'); } public function update($id) { $rules = array( array( 'field' => 'name', 'label' => 'City Name', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == TRUE) { $data = array('name' => $this->input->post('name')); $this->cities_model->update($id,$data); redirect(base_url('cities')); } else { $header['title'] = 'Edit City'; $data['city'] = $this->cities_model->get_by_id($id); $this->load->view('header',$header); $this->load->view('cities/create',$data); $this->load->view('footer'); } } public function delete($id) { $header['title'] = 'Delete City'; $data['city'] = $this->cities_model->get_by_id($id); $this->load->view('header', $header); $this->load->view('cities/delete', $data); $this->load->view('footer'); } public function destroy($id) { $this->cities_model->delete($id); redirect(base_url('cities')); } }
Sini:
- Kode di atas mengimplementasikan semua metode yang dibutuhkan untuk membuat, memperbarui, menghapus, dan membaca baris dari basis data.
Buat file lain bernama Contacts.php di application/controllers dan tambahkan kode berikut:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url', 'form'); $this->load->library('form_validation'); $this->load->model('pals_model'); } public function index() { $header['title'] = 'Contacts List'; $data['pals'] = $this->pals_model->get_all(); $this->load->view('header', $header); $this->load->view('contacts/index', $data); $this->load->view('footer'); } public function create() { $this->load->model('cities_model'); $header['title'] = 'Create Contact'; $data['cities'] = $this->cities_model->get_all(); $this->load->view('header', $header); $this->load->view('contacts/create', $data); $this->load->view('footer'); } public function store() { $rules = array( array( 'field' => 'contact_name', 'label' => 'Contact Name', 'rules' => 'required' ), array( 'field' => 'contact_number', 'label' => 'Contact Number', 'rules' => 'required', 'errors' => array( 'required' => 'You must provide a %s.', ), ), array( 'field' => 'email_address', 'label' => 'Email Address', 'rules' => 'required' ), array( 'field' => 'city_id', 'label' => 'City', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == FALSE) { $this->load->model('cities_model'); $header['title'] = 'Create Contact'; $data['cities'] = $this->cities_model->get_all(); $this->load->view('header', $header); $this->load->view('contacts/create', $data); $this->load->view('footer'); } else { $data = array( 'city_id' => $this->input->post('city_id'), 'contact_name' => $this->input->post('contact_name'), 'contact_number' => $this->input->post('contact_number'), 'email_address' => $this->input->post('email_address'), ); $this->pals_model->insert($data); redirect(base_url('contacts')); } } public function edit($id) { $this->load->model('cities_model'); $header['title'] = 'Edit Contact'; $data['cities'] = $this->cities_model->get_all(); $data['pal'] = $this->pals_model->get_by_id($id); $this->load->view('header', $header); $this->load->view('contacts/edit', $data); $this->load->view('footer'); } public function update($id) { $rules = array( array( 'field' => 'contact_name', 'label' => 'Contact Name', 'rules' => 'required' ), array( 'field' => 'contact_number', 'label' => 'Contact Number', 'rules' => 'required', 'errors' => array( 'required' => 'You must provide a %s.', ), ), array( 'field' => 'email_address', 'label' => 'Email Address', 'rules' => 'required' ), array( 'field' => 'city_id', 'label' => 'City', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == FALSE) { $this->load->model('cities_model'); $header['title'] = 'Create Contact'; $data['cities'] = $this->cities_model->get_all(); $data['pal'] = $this->pals_model->get_by_id($id); $this->load->view('header', $header); $this->load->view('contacts/edit', $data); $this->load->view('footer'); } else { $data = array( 'city_id' => $this->input->post('city_id'), 'contact_name' => $this->input->post('contact_name'), 'contact_number' => $this->input->post('contact_number'), 'email_address' => $this->input->post('email_address'), ); $this->pals_model->update($id, $data); redirect(base_url('contacts')); } } public function delete($id) { $this->load->model('cities_model'); $header['title'] = 'Delete Contact'; $data['cities'] = $this->cities_model->get_all(); $data['pal'] = $this->pals_model->get_by_id($id); $this->load->view('header',$header); $this->load->view('contacts/delete',$data); $this->load->view('footer'); } public function destroy($id){ $this->pals_model->delete($id); redirect(base_url('contacts')); } }
Tampilan Manajer Kontak
Kita sudah membahas formulir dan validasi di CodeKita akan menggunakan Igniter dalam tutorial sebelumnya, dan kita akan menggunakan kode yang telah kita kembangkan di sana. Untuk melengkapi penjelasan, tampilan aplikasi kita akan terlihat seperti berikut:
Anda dapat mengunduh kode untuk tampilan tersebut dengan mengklik tautan di bawah ini:
CodeUnduh Tampilan Pengelola Kontak Igniter



