CodeIgniteri andmebaasi õpetus: loomine, värskendamine, kustutamine

Lang L: none (table-of-contents):

Anonim

CodeIgniter töötamine andmebaasiga

Eelmises õpetuses oleme käsitlenud CodeIgniteri aktiivse kirje põhitõdesid ja seda, kuidas andmebaasi kirjeid lisada, värskendada, kustutada ja lugeda. Selles õpetuses loome andmebaasimudelid ja kasutame vorme andmebaasikirjete loomiseks ja värskendamiseks. kui olete CodeIgniteris andmebaasidega töötamisel täiesti uus, siis soovitasite lugeda eelmist õpetust

Andmebaasi seadistamine

Alustame õppeprojekti andmebaasi loomisega. Loome kontaktandmete haldamiseks lihtsa andmebaasi. Loome lihtsa andmebaasi, kus on kaks (2) tabelit, mis nimetavad sõpru ja linnu, kus nad elavad. Sõprade ja linnade suhe on üks-ühele, esmase võtmena linnades on ID ja võõraste võtmetena linnade ID tabelite tabelites. .

Andmebaasi loomiseks käivitage järgmised skriptid:

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`));

Loome nüüd linnade tabeli

CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;

CodeIgniteri andmebaasimudelid

Nüüd loome oma andmebaasi mudelid. Mudel on MVC M-osa. Mudel tegeleb andmetele juurdepääsu, andmetega manipuleerimise ja äriloogikaga.

CodeIgniteris peab iga mudel määratlema meetodid, mida see toetab. Selle asemel, et igas mudelis sama koodi korrata, kasutame objektipõhises programmeerimises ära pärandamise ja loome algmudeli klassi, mis määratleb põhimeetodid, mida soovime, et meie mudelid toetaksid.

Allolevas tabelis on toodud meetodid, mille määratleme ja kuidas andmetele juurde pääseda.

S / N Meetod Kirjeldus
1 __konstrueerida Määrab konstruktori meetodi, mis kutsub üles vanema konstruktori meetodi
2 get_all Toob andmebaasist kõik väljad ja kirjed ilma tingimusteta
3 get_by_id Toob andmebaasist ühe rea, kasutades INT tüüpi ID peamist võtit
4 mine_kuhu Toob kõik väljad andmebaasist kriteeriumide alusel
5 sisestada Lisab andmebaasi uue kirje
6 värskendus Uuendab olemasolevat andmebaasikirjet, mis põhineb INT-tüüpi ID-i primaarvõtmel
7 kustuta Kustutab olemasoleva kirje andmebaasist, mis põhineb INT-tüüpi ID-i primaarvõtmel

Järgmine pilt näitab klassi skeemi ja seda, kuidas on Pals ja Citiesi lastemudelid seotud vanemmudeliga BaseModel.

Loome kaks ülaltoodud pildil kirjeldatud mudelit

Looge uus klass BaseModel rakenduses application / models / BaseModel.php

Lisage järgmine kood

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);}}

SIIN,

  • kaitstud $ table = ''; määratleb kaitstud muutuja nimega tabel. Selle täidab vastav lapseklass, et täpsustada, millise tabeliga meie baasmudeli klassi meetodid peaksid suhtlema.
  • avalik funktsioon __construct () {…} määratleb konstruktori meetodi ja viib ellu vanema klassi CI_Model konstruktori meetodi.
  • get_all () {…} kasutab andmebaasi teeki ja muutuja $ tabeli väärtust, et käivitada SELECT päring meie andmebaasi vastu.
  • get_by_id ($ id) {…} määratleb meetodi ühe rea otsimiseks andmebaasist ja aktsepteerib parameetri $ id, mis peaks olema INT andmetüüp.
  • get_where ($ where) {…} määratleb meetodi get, mis võimaldab teil määrata klausli kus.
  • insert ($ data) {…} määratleb sisestamismeetodi ja aktsepteerib massiivi parameetrit $ data, mis sisaldab andmebaasi kirjutatavaid väärtusi.
  • update ($ id, $ data) {…} määratleb värskendusmeetodi ja aktsepteerib massiivi parameetrit $ data, mis sisaldab andmebaasis värskendatavaid väärtusi.
  • kustuta ($ id) {…} määratleb kustutusmeetodi, mis aktsepteerib parameetri $ id parameetri, mis peaks olema andmetüüp INT.

nüüd, kui vanemudeli klassiga oleme hakkama saanud, laseme luua oma Palsi mudelid

Looge uus fail rakenduses / models / Pals.php

Lisage järgmine kood

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();}}

SIIN,

  • klass Pals laiendab BaseModeli {…} laiendab vanemmudelit BaseModel ja teeb kõikidele BaseModelis määratletud meetoditele juurdepääsu lapseklassile.
  • kaitstud $ table = 'pals'; määratleb meie vanemamudeliga seotud tabeli nime
  • __construct () {…} lähtestab algkonstruktori
  • public function get_by_id ($ id) {…} alistab saidi get_by_id, et pakkuda Palsile omast kohandatud rakendust. Get_by_id päring kasutab linna nime tabelist linnade toomiseks liitumist
  • avalik funktsioon get_all () {…} alistab meetodi get_all, et rakendada palsi ja linnade tabeli vahel liitumispäringut

Looge uus fail rakenduses / models / Cities.php


SIIN,

  • kaitstud $ table = 'linnad'; määratleb mudeli andmebaasi tabeli.

Nagu ülaltoodud koodist näete, säästab pärand CodeIgniteris mudelitega töötades meile palju aega. Järgmises osas õpime

Kontaktihalduri kontrollerid

Nüüd, kui oleme mudelid loonud, loome oma rakenduse jaoks kontrollerid. Meil on kaks kontrollerit, nimelt Kontaktid ja Linnad

Alustame linnadest

Looge rakenduse / kontrollerite kataloogi uus fail Cities.php

Lisage järgmine kood

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'));}}

SIIN,

  • Ülaltoodud kood rakendab kõiki meetodeid, mida on vaja andmebaasist ridade loomiseks, värskendamiseks, kustutamiseks ja lugemiseks.

Looge rakenduses / kontrollerites teine ​​fail Contacts.php

Lisage järgmine kood

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'));}}

Kontaktihalduri vaated

Vorme ja valideerimist vaatasime juba CodeIgniteris eelmistes õpetustes. Kasutame eelmistes õpetustes väljatöötatud koodi. Täielikkuse huvides reprodutseerime eelmistes õpetustes loodud koodi.

Meie taotluse vaated on järgmised

Ülaltoodud vaadete koodi saate alla laadida, klõpsates alloleval lingil

CodeIgniteri kontaktide halduri vaated Laadi alla

Kokkuvõte

Selles õpetuses saate teada, kuidas CodeIgniteris mudeleid luua. Koodide korduvkasutatavuse edendamiseks kasutasime pärandit objektorienteeritud programmeerimisel, luues baasmudeli, mis rakendab nelja peamist andmebaasitoimingut: sisestamine, lugemine, värskendamine ja kustutamine.

Oleme kontseptsioone demonstreerinud praktilise rakenduse abil ja jätkame seda järgmistes õpetustes, lisades rakendusele rohkem funktsionaalsust.