Vadnica za zbirko podatkov CodeIgniter: Ustvari, posodobi, izbriši

Kazalo:

Anonim

CodeIgniter Delo z bazo podatkov

V prejšnji vadnici smo zajeli osnove aktivnega zapisa CodeIgniter in kako vstaviti, posodobiti, izbrisati in prebrati zapise iz baze podatkov. V tej vadnici bomo ustvarili modele baz podatkov in uporabili obrazce za ustvarjanje in posodabljanje zapisov baze podatkov. če ste povsem novi pri delu z bazami podatkov v CodeIgniterju, potem ste svetovali branje prejšnje vadnice

Konfiguracija zbirke podatkov

Začeli bomo z ustvarjanjem baze podatkov o projektu vaje. Ustvarili bomo preprosto bazo podatkov za upravljanje kontaktnih podatkov. Ustvarili bomo preprosto bazo podatkov z dvema (2) tabelama, ki imenuje prijatelje in mesta, v katerih živijo. Razmerje med prijatelji in mesti je ena na ena z ID-jem v mestih kot primarnim ključem in city_id kot tujim ključem v tabelah s prijatelji. .

Za izdelavo baze podatkov zaženite naslednje skripte:

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

Ustvarimo zdaj tabelo mest

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

Modeli zbirke podatkov CodeIgniter

Zdaj bomo ustvarili modele za našo bazo podatkov. Model je M del MVC. Model se ukvarja z dostopom do podatkov, manipulacijo s podatki in poslovno logiko.

V CodeIgniter mora vsak model določiti metode, ki jih bo podpiral. Namesto da bi v vsakem modelu ponavljali isto kodo, bomo izkoristili dedovanje pri objektno usmerjenem programiranju in ustvarili razred nadrejenega modela, ki bo določil osnovne metode, ki jih želimo, da naši modeli podpirajo.

Spodnja tabela prikazuje metode, ki jih bomo opredelili, in način dostopa do podatkov.

S / N Metoda Opis
1. __zgraditi Definira konstruktorsko metodo, ki prikliče nadrejeno konstruktorsko metodo
2. get_all Pridobi vsa polja in zapise iz baze podatkov brez kakršnih koli pogojev
3. get_by_id Pridobi eno vrstico iz baze podatkov s pomočjo primarnega ključa tipa INT z imenom id
4. get_where Pridobi vsa polja iz baze podatkov na podlagi meril, ki temeljijo na
5. vstavi V bazo podatkov vstavi nov zapis
6. nadgradnja Posodobi obstoječi zapis baze podatkov na podlagi primarnega ključa tipa INT z imenom id
7. izbriši Izbriše obstoječi zapis iz baze podatkov na podlagi primarnega ključa tipa INT z imenom id

Naslednja slika prikazuje diagram razredov in kako so podrejeni modeli Pals in Cities povezani s starševskim modelom BaseModel.

Ustvarili bomo dva modela, kot je opisano na zgornji sliki

Ustvari nov razred BaseModel v application / models / BaseModel.php

Dodajte naslednjo kodo

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

TUKAJ,

  • zaščitena $ tabela = ''; definira zaščiteno spremenljivko z imenom tabela. To bo zapolnil ustrezni podrejeni razred, da bo določil, s katero tabelo naj sodelujejo metode razreda osnovnega modela.
  • javna funkcija __construct () {…} definira metodo konstruktorja in izvede metodo konstruktorja nadrejenega razreda CI_Model.
  • get_all () {…} uporablja knjižnico baze podatkov in vrednost spremenljivke $ tabela za zagon poizvedbe SELECT proti naši bazi podatkov.
  • get_by_id ($ id) {…} definira metodo za pridobivanje ene vrstice iz baze podatkov in sprejme parameter $ id, ki bi moral biti podatkovnega tipa INT.
  • get_where ($ where) {…} definira metodo get, ki omogoča nastavitev klavzule where.
  • insert ($ data) {…} definira metodo vstavljanja in sprejme parameter polja $ data, ki vsebuje vrednosti, ki jih je treba zapisati v bazo podatkov.
  • update ($ id, $ data) {…} definira metodo posodobitve in sprejme parameter polja $ data, ki vsebuje vrednosti, ki jih je treba posodobiti v zbirki podatkov.
  • delete ($ id) {…} definira metodo brisanja, ki sprejme parameter $ id, ki bi moral biti podatkovnega tipa INT.

zdaj, ko smo končali z nadrejenim razredom modelov, omogočimo izdelavo naših modelov Pals

Ustvarite novo datoteko v application / models / Pals.php

Dodajte naslednjo kodo

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

TUKAJ,

  • class Pals razširja BaseModel {…} razširja nadrejeni model BaseModel in samodejno omogoči dostop do vseh metod, opredeljenih v BaseModel, do podrejenega razreda.
  • zaščitena $ tabela = 'prijatelji'; definira ime tabele, povezano z našim nadrejenim modelom
  • __construct () {…} inicializira nadrejeni konstruktor
  • javna funkcija get_by_id ($ id) {…} preglasi get_by_id, da zagotovi izvedbo po meri, specifično za Palsov model. Poizvedba za get_by_id uporablja združevanje za pridobivanje imena mesta iz tabele mest
  • javna funkcija get_all () {…} preglasi metodo get_all za izvedbo poizvedbe za pridružitev med tabelo prijateljev in mest

Ustvarite novo datoteko v application / models / Cities.php


TUKAJ,

  • zaščitena $ tabela = 'mesta'; definira tabelo baze podatkov modela.

Kot lahko vidite iz zgoraj dane kode, nam dedovanje prihrani veliko časa pri delu z modeli v CodeIgniter. V naslednjem poglavju se bomo naučili

Krmilniki upravitelja stikov

Zdaj, ko smo ustvarili modele, ustvarimo krmilnike za našo aplikacijo. Imeli bomo dva krmilnika, in sicer Stike in Mesta

Začnimo z mesti

Ustvarite novo datoteko Cities.php v imeniku aplikacij / krmilnikov

Dodajte naslednjo kodo

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

TUKAJ,

  • Zgornja koda izvaja vse metode, potrebne za ustvarjanje, posodabljanje, brisanje in branje vrstic iz baze podatkov.

Ustvarite drugo datoteko Contacts.php v aplikaciji / krmilniki

Dodajte naslednjo kodo

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

Pogledi upravitelja stikov

Obrazce in preverjanje veljavnosti v CodeIgniter smo že preučili v prejšnjih vajah. Uporabili bomo kodo, ki smo jo razvili v prejšnjih vajah. Za popolnost bomo reproducirali kodo, ki smo jo ustvarili v prejšnjih vajah.

Pogledi na našo aplikacijo bodo naslednji

Kodo za zgornje poglede lahko prenesete s klikom na spodnjo povezavo

Prenos pogledov upravitelja stikov CodeIgniter

Povzetek

V tej vadnici boste izvedeli, kako ustvariti modele v CodeIgniter. Dedovanje smo uporabili pri objektno usmerjenem programiranju za spodbujanje ponovne uporabe kode z ustvarjanjem osnovnega modela, ki izvaja štiri glavne operacije baze podatkov vstavljanje, branje, posodabljanje in brisanje.

Konference smo prikazali s praktično aplikacijo in to bomo nadaljevali v naslednjih vajah, tako da bomo aplikaciji dodali več funkcionalnosti.