CodeIgniter Bekerja dengan Database
Dalam tutorial sebelumnya, kita telah membahas dasar-dasar catatan aktif CodeIgniter dan cara menyisipkan, memperbarui, menghapus, dan membaca catatan dari database. Dalam tutorial ini, kita akan membuat model database dan menggunakan formulir untuk membuat dan memperbarui record database. jika Anda benar-benar baru dalam bekerja dengan database di CodeIgniter, maka Anda disarankan untuk membaca tutorial sebelumnya
Konfigurasi Basis Data
Kami akan mulai dengan membuat database proyek tutorial. Kami akan membuat database sederhana untuk mengelola detail kontak. Kita akan membuat database sederhana dengan dua (2) tabel nama pals dan city tempat mereka tinggal. Hubungan antara pals dan cities bersifat one-to-one dengan id in cities sebagai primary key dan city_id sebagai foreign key 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 buat tabel kota
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
Model Database CodeIgniter
Kami sekarang akan membuat model untuk database kami. Model adalah bagian M dari MVC. Model tersebut berkaitan dengan akses data, manipulasi data, dan logika bisnis.
Di CodeIgniter, setiap model harus menentukan metode yang akan didukungnya. Alih-alih mengulangi kode yang sama di setiap model, kita akan memanfaatkan pewarisan dalam pemrograman berorientasi objek dan membuat kelas model induk yang akan menentukan metode dasar yang kita ingin model kita dukung.
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 bidang dan catatan dari database tanpa ketentuan apa pun |
3 | get_by_id | Mengambil satu baris dari database menggunakan kunci utama tipe INT bernama id |
4 | get_where | Mengambil semua field dari database berdasarkan kriteria yang ada |
5 | memasukkan | Menyisipkan catatan baru ke dalam database |
6 | memperbarui | Memperbarui catatan database yang ada berdasarkan kunci utama tipe INT bernama id |
7 | menghapus | Menghapus record yang ada dari database berdasarkan primary key tipe INT bernama id |
Gambar berikut menunjukkan diagram kelas dan bagaimana model anak Pals dan Cities berhubungan dengan model induk BaseModel.
Kami akan membuat dua model seperti yang dijelaskan pada gambar di atas
Buat kelas baru BaseModel di application / models / BaseModel.php
Tambahkan kode berikut
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,
- dilindungi $ table = ''; mendefinisikan tabel bernama variabel yang dilindungi. Ini akan diisi oleh kelas anak masing-masing untuk menentukan tabel mana yang harus berinteraksi dengan metode kelas model dasar kita.
- public function __construct () {…} mendefinisikan metode konstruktor dan menjalankan metode konstruktor dari kelas induk CI_Model.
- get_all () {…} menggunakan pustaka database dan nilai variabel $ table untuk menjalankan kueri SELECT terhadap database kita.
- get_by_id ($ id) {…} mendefinisikan metode untuk mengambil satu baris dari database dan menerima parameter $ id yang seharusnya bertipe data INT.
- get_where ($ where) {…} mendefinisikan metode get yang memungkinkan Anda menyetel klausa where.
- insert ($ data) {…} mendefinisikan metode insert dan menerima parameter array $ data yang berisi nilai yang akan ditulis ke database.
- update ($ id, $ data) {…} mendefinisikan metode update dan menerima parameter array $ data yang berisi nilai-nilai yang akan diperbarui dalam database.
- delete ($ id) {…} mendefinisikan metode delete yang menerima parameter $ id yang seharusnya bertipe data INT.
sekarang setelah kita selesai dengan kelas model induk, mari kita buat model Pals kita
Buat file baru di application / models / Pals.php
Tambahkan kode berikut
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,
- class Pals extends BaseModel {…} memperluas model induk BaseModel dan secara otomatis membuat semua metode yang ditentukan dalam BaseModel diakses ke kelas anak.
- dilindungi $ table = 'pals'; mendefinisikan nama tabel yang terkait dengan model induk kita
- __construct () {…} menginisialisasi konstruktor induk
- public function get_by_id ($ id) {…} menimpa get_by_id untuk menyediakan implementasi kustom khusus untuk model Pals. Kueri untuk get_by_id menggunakan gabungan untuk mengambil nama kota dari tabel kota
- public function get_all () {…} menimpa metode get_all untuk mengimplementasikan kueri gabungan antara pals dan tabel kota
Buat file baru di application / models / Cities.php
SINI,
- dilindungi $ table = 'kota'; mendefinisikan tabel database model.
Seperti yang Anda lihat dari kode yang diberikan di atas, Inheritance menghemat banyak waktu saat bekerja dengan model di CodeIgniter. Pada bagian selanjutnya, kita akan belajar
Pengontrol Manajer Kontak
Sekarang kita telah membuat model, mari kita buat pengontrol untuk aplikasi kita. Kami akan memiliki dua pengontrol yaitu Kontak dan Kota
Mari kita mulai dengan kota
Buat file baru Cities.php di direktori application / controllers
Tambahkan kode berikut
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 database.
Buat file lain Contacts.php di application / controllers
Tambahkan kode berikut
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
Kami sudah melihat formulir dan validasi di CodeIgniter di tutorial sebelumnya. Kami akan menggunakan kode yang kami kembangkan di tutorial sebelumnya. Demi kelengkapan, kami akan mereproduksi kode yang kami buat di tutorial sebelumnya.
Tampilan aplikasi kita adalah sebagai berikut
Anda dapat mendownload kode untuk tampilan di atas dengan mengklik link di bawah
Tampilan Manajer Kontak CodeIgniter Unduh
Ringkasan
Dalam tutorial ini, Anda akan mempelajari cara membuat model di CodeIgniter. Kami memanfaatkan pewarisan dalam pemrograman berorientasi objek untuk mempromosikan kegunaan kembali kode dengan membuat model dasar yang mengimplementasikan empat operasi database utama, yaitu menyisipkan, membaca, memperbarui, dan menghapus.
Kami telah mendemonstrasikan konsep menggunakan aplikasi praktis, dan kami akan terus melakukannya di tutorial berikutnya dengan menambahkan lebih banyak fungsionalitas ke aplikasi.