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.