Vodič za bazu podataka CodeIgniter: Stvaranje, ažuriranje, brisanje

Sadržaj:

Anonim

CodeIgniter Rad s bazom podataka

U prethodnom uputstvu obradili smo osnove aktivnog zapisa CodeIgniter i kako umetnuti, ažurirati, izbrisati i pročitati zapise iz baze podataka. U ovom uputstvu stvorit ćemo modele baza podataka i koristiti obrasce za stvaranje i ažuriranje zapisa baze podataka. ako ste potpuno novi u radu s bazama podataka u CodeIgniteru, savjetovali ste pročitati prethodni vodič

Konfiguracija baze podataka

Započet ćemo s izradom baze podataka udžbeničkog projekta. Stvorit ćemo jednostavnu bazu podataka za upravljanje podacima o kontaktima. Stvorit ćemo jednostavnu bazu podataka s dvije (2) tablice s imenima prijatelja i gradovima u kojima žive. Odnos između prijatelja i gradova je jedan na jedan s id-om u gradovima kao primarnim ključem i city_id kao stranim ključem u tablicama s prijateljima. .

Pokrenite sljedeće skripte za stvaranje baze podataka:

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

Stvorimo sada tablicu gradova

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

Modeli baze podataka CodeIgniter

Sada ćemo stvoriti modele za našu bazu podataka. Model je M dio MVC-a. Model se bavi pristupom podacima, manipulacijom podacima i poslovnom logikom.

U CodeIgniteru svaki model mora definirati metode koje će podržavati. Umjesto ponavljanja istog koda u svakom modelu, mi ćemo iskoristiti nasljeđivanje u objektno orijentiranom programiranju i stvoriti roditeljsku klasu modela koja će definirati osnovne metode koje želimo da naši modeli podržavaju.

Tablica u nastavku prikazuje metode koje ćemo definirati i način pristupa podacima.

S N Metoda Opis
1 __izgraditi Definira metodu konstruktora koja poziva roditeljsku metodu konstruktora
2 get_all Dohvaća sva polja i zapise iz baze podataka bez ikakvih uvjeta
3 get_by_id Dohvaća jedan redak iz baze podataka pomoću primarnog ključa tipa INT nazvanog id
4 doći_kuda Dohvaća sva polja iz baze podataka na temelju temeljenih na kriterijima
5 umetnuti Ubacuje novi zapis u bazu podataka
6 Ažuriraj Ažurira postojeći zapis baze podataka na temelju primarnog ključa tipa INT s imenom id
7 izbrisati Briše postojeći zapis iz baze podataka na temelju primarnog ključa tipa INT s imenom id

Sljedeća slika prikazuje dijagram razreda i kako se podređeni modeli Pals and Cities odnose na nadređeni model BaseModel.

Stvorit ćemo dva modela kako je opisano na gornjoj slici

Stvorite novu klasu BaseModel u aplikaciji / models / BaseModel.php

Dodajte sljedeći kod

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

OVDJE,

  • zaštićena $ tablica = ''; definira zaštićenu varijablu nazvanu tablica. Ovo će popuniti odgovarajuća podređena klasa kako bi se specificiralo s kojom tablicom trebaju komunicirati naše metode klase osnovnog modela.
  • javna funkcija __construct () {…} definira metodu konstruktora i izvršava metodu konstruktora nadređene klase CI_Model.
  • get_all () {…} koristi biblioteku baze podataka i vrijednost varijable $ table za pokretanje SELECT upita prema našoj bazi podataka.
  • get_by_id ($ id) {…} definira metodu za dohvaćanje jednog retka iz baze podataka i prihvaća parametar $ id koji bi trebao biti INT tipa podataka.
  • get_where ($ where) {…} definira metodu get koja vam omogućuje postavljanje klauzule where.
  • insert ($ data) {…} definira metodu umetanja i prihvaća parametar niza $ data koji sadrži vrijednosti koje se zapisuju u bazu podataka.
  • update ($ id, $ data) {…} definira metodu ažuriranja i prihvaća parametar niza $ data koji sadrži vrijednosti koje će se ažurirati u bazi podataka.
  • delete ($ id) {…} definira metodu brisanja koja prihvaća parametar $ id koji bi trebao biti tipa podataka INT.

sada kad smo završili s roditeljskom klasom modela, omogućimo stvaranje naših Pals modela

Stvorite novu datoteku u application / models / Pals.php

Dodajte sljedeći kod

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

OVDJE,

  • class Pals proširuje BaseModel {…} proširuje nadređeni model BaseModel i automatski čini sve metode definirane u BaseModel pristupnim podređenoj klasi.
  • zaštićen $ table = 'prijatelji'; definira ime tablice povezano s našim nadređenim modelom
  • __construct () {…} inicijalizira nadređeni konstruktor
  • javna funkcija get_by_id ($ id) {…} poništava get_by_id kako bi pružila prilagođenu implementaciju specifičnu za Palsov model. Upit za get_by_id koristi spoj za dohvaćanje imena grada iz tablice gradova
  • javna funkcija get_all () {…} nadjačava metodu get_all za implementaciju upita za pridruživanje između tablice prijatelja i gradova

Stvorite novu datoteku u application / models / Cities.php


OVDJE,

  • zaštićen $ table = 'gradovi'; definira tablicu baze podataka modela.

Kao što možete vidjeti iz gore datog koda, nasljeđivanje nam štedi puno vremena prilikom rada s modelima u CodeIgniteru. U sljedećem ćemo odjeljku naučiti

Kontroleri upravitelja kontakata

Sad kad smo kreirali modele, kreirajmo kontrolere za našu aplikaciju. Imat ćemo dva kontrolera, naime Kontakti i Gradovi

Krenimo od gradova

Stvorite novu datoteku Cities.php u direktoriju aplikacija / kontrolora

Dodajte sljedeći kod

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

OVDJE,

  • Gornji kod implementira sve metode potrebne za stvaranje, ažuriranje, brisanje i čitanje redaka iz baze podataka.

Stvorite drugu datoteku Contacts.php u aplikaciji / kontrolerima

Dodajte sljedeći kod

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 kontakata

Obrasce i provjeru valjanosti već smo gledali u CodeIgniteru u prethodnim vodičima. Koristit ćemo kôd koji smo razvili u prethodnim vodičima. Radi cjelovitosti, reproducirat ćemo kôd koji smo stvorili u prethodnim vodičima.

Stavovi naše aplikacije bit će sljedeći

Kôd za gornje prikaze možete preuzeti klikom na donju vezu

CodeIgniter Kontakti Manager Views Views Preuzimanje

Sažetak

U ovom vodiču naučit ćete kako stvoriti modele u CodeIgniteru. Iskoristili smo nasljeđivanje u objektno orijentiranom programiranju kako bismo promovirali ponovnu upotrebu koda stvarajući osnovni model koji provodi četiri glavne operacije baze podataka umetanje, čitanje, ažuriranje i brisanje.

Demonstrirali smo koncepte koristeći praktičnu aplikaciju, a nastavit ćemo to činiti u sljedećim vodičima dodavanjem dodatne funkcionalnosti aplikaciji.