CodeIgniter Bekerja dengan Pangkalan Data
Dalam tutorial sebelumnya, kami telah membahas asas-asas rekod aktif CodeIgniter dan cara memasukkan, mengemas kini, menghapus dan membaca rekod dari pangkalan data. Dalam tutorial ini, kami akan membuat model pangkalan data dan menggunakan borang untuk membuat dan mengemas kini rekod pangkalan data. jika anda sepenuhnya baru bekerja dengan pangkalan data di CodeIgniter, maka anda menasihatkan membaca tutorial sebelumnya
Konfigurasi Pangkalan Data
Kita akan mulakan dengan membuat pangkalan data projek tutorial. Kami akan membuat pangkalan data mudah untuk menguruskan maklumat hubungan. Kami akan membuat pangkalan data mudah dengan dua (2) jadual nama rakan dan bandar tempat mereka tinggal. Hubungan antara rakan dan bandar adalah satu-ke-satu dengan id di bandar sebagai kunci utama dan city_id sebagai kunci asing dalam jadual rakan .
Jalankan skrip berikut untuk membuat pangkalan data:
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`));
Mari buat jadual bandar sekarang
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
Model Pangkalan Data CodeIgniter
Kami sekarang akan membuat model untuk pangkalan data kami. Model adalah bahagian M dari MVC. Model berkenaan dengan akses data, manipulasi data, dan logik perniagaan.
Dalam CodeIgniter, setiap model harus menentukan kaedah yang akan disokongnya. Daripada mengulangi kod yang sama di setiap model, kami akan memanfaatkan warisan dalam pengaturcaraan berorientasikan objek dan membuat kelas model induk yang akan menentukan kaedah asas yang kami mahukan model kami menyokong.
Jadual di bawah menunjukkan kaedah yang akan kami tentukan dan bagaimana data akan diakses.
S / N | Kaedah | Penerangan |
1 | __konstruk | Mentakrifkan kaedah konstruktor yang memanggil kaedah konstruktor induk |
2 | dapatkan_semua | Mengambil semua medan dan rekod dari pangkalan data tanpa syarat |
3 | dapatkan_by_id | Mengambil satu baris dari pangkalan data menggunakan kunci utama jenis INT bernama id |
4 | sampai di mana sahaja | Mengambil semua bidang dari pangkalan data berdasarkan kriteria berdasarkan |
5 | masukkan | Memasukkan rekod baru ke dalam pangkalan data |
6 | kemas kini | Mengemas kini rekod pangkalan data yang ada berdasarkan kunci utama jenis INT bernama id |
7 | padam | Memadam rekod yang ada dari pangkalan data berdasarkan kunci utama jenis INT bernama id |
Gambar berikut menunjukkan gambarajah kelas dan bagaimana model anak Pals and Cities berkaitan dengan model ibu bapa BaseModel.
Kami akan membuat dua model seperti yang dijelaskan dalam gambar di atas
Buat BaseModel kelas baru dalam aplikasi / model / BaseModel.php
Tambahkan kod 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);}}
DI SINI,
- dilindungi $ table = ''; mentakrifkan pemboleh ubah yang dilindungi bernama jadual. Ini akan diisi oleh kelas anak masing-masing untuk menentukan jadual mana kaedah kelas model asas kita harus berinteraksi.
- fungsi awam __construct () {…} mentakrifkan kaedah konstruktor dan melaksanakan kaedah konstruktor kelas induk CI_Model.
- get_all () {…} menggunakan pustaka pangkalan data dan nilai jadual $ pemboleh ubah untuk menjalankan pertanyaan SELECT terhadap pangkalan data kami.
- get_by_id ($ id) {…} mentakrifkan kaedah untuk mendapatkan satu baris dari pangkalan data dan menerima parameter $ id yang seharusnya dari jenis data INT.
- get_where ($ where) {…} mentakrifkan kaedah get yang membolehkan anda menetapkan klausa mana.
- insert ($ data) {…} menentukan kaedah sisipan dan menerima parameter array $ data yang mengandungi nilai-nilai yang akan ditulis ke pangkalan data.
- kemas kini ($ id, $ data) {…} menentukan kaedah kemas kini dan menerima parameter array $ data yang mengandungi nilai-nilai yang akan diperbaharui dalam pangkalan data.
- delete ($ id) {…} mendefinisikan kaedah delete yang menerima parameter $ id yang seharusnya dari jenis data INT.
sekarang kita sudah selesai dengan kelas model induk, mari buat model Pals kita
Buat fail baru dalam aplikasi / model / Pals.php
Tambahkan kod 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();}}
DI SINI,
- class Pals memperluas BaseModel {…} memperluas model induk BaseModel dan secara automatik membuat semua kaedah yang ditentukan dalam BaseModel diakses ke kelas anak.
- dilindungi $ table = 'pals'; mentakrifkan nama jadual yang dikaitkan dengan model induk kami
- __construct () {…} memulakan konstruktor induk
- fungsi awam get_by_id ($ id) {…} menggantikan get_by_id untuk memberikan pelaksanaan khusus untuk model Pals. Pertanyaan untuk get_by_id menggunakan gabungan untuk mengambil nama bandar dari jadual bandar
- fungsi awam get_all () {…} mengganti kaedah get_all untuk melaksanakan pertanyaan bergabung antara rakan dan jadual bandar
Buat fail baru dalam aplikasi / model / Cities.php
DI SINI,
- $ table dilindungi = 'bandar'; mentakrifkan jadual pangkalan data model.
Seperti yang anda lihat dari kod yang diberikan di atas, Inheritance menjimatkan banyak masa ketika bekerja dengan model di CodeIgniter. Di bahagian seterusnya, kita akan belajar
Pengawal Pengurus Kenalan
Setelah kita membuat model, mari buat pengawal untuk aplikasi kita. Kami akan mempunyai dua pengawal iaitu Kenalan dan Bandar
Mari mulakan dengan bandar
Buat fail baru Cities.php dalam direktori aplikasi / pengawal
Tambahkan kod 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'));}}
DI SINI,
- Kod di atas menerapkan semua kaedah yang diperlukan untuk membuat, mengemas kini, menghapus dan membaca baris dari pangkalan data.
Buat fail lain Contacts.php dalam aplikasi / pengawal
Tambahkan kod 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'));}}
Paparan Pengurus Kenalan
Kami sudah melihat borang dan pengesahan di CodeIgniter dalam tutorial sebelumnya. Kami akan menggunakan kod yang kami kembangkan dalam tutorial sebelumnya. Demi kelengkapan, kami akan menghasilkan semula kod yang kami buat dalam tutorial sebelumnya.
Pandangan aplikasi kami adalah seperti berikut
Anda boleh memuat turun kod untuk paparan di atas dengan mengklik pautan di bawah
Muat turun Paparan Pengurus Kenalan CodeIgniter
Ringkasan
Dalam tutorial ini, Anda akan belajar bagaimana membuat model di CodeIgniter. Kami memanfaatkan warisan dalam pengaturcaraan berorientasikan objek untuk mempromosikan penggunaan semula kod dengan membuat model asas yang menerapkan empat operasi pangkalan data utama memasukkan, membaca, mengemas kini dan menghapus.
Kami telah menunjukkan konsep menggunakan aplikasi praktikal, dan kami akan terus melakukannya dalam tutorial seterusnya dengan menambahkan lebih banyak fungsi pada aplikasi.