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.