„CodeIgniter“ duomenų bazės pamoka: sukurkite, atnaujinkite, ištrinkite

„CodeIgniter“, dirbantis su duomenų baze

Ankstesnėje pamokoje aptarėme „CodeIgniter“ aktyviojo įrašo pagrindus ir tai, kaip įterpti, atnaujinti, ištrinti ir skaityti įrašus iš duomenų bazės. Šioje pamokoje sukursime duomenų bazių modelius ir naudosime formas duomenų bazės įrašams kurti ir atnaujinti. jei dar visiškai nesinaudojate „CodeIgniter“ duomenų bazėmis, patarėte perskaityti ankstesnę pamoką

Duomenų bazės konfigūracija

Pradėsime nuo mokymo programos duomenų bazės sukūrimo. Sukursime paprastą duomenų bazę, skirtą kontaktiniams duomenims tvarkyti. Mes sukursime paprastą duomenų bazę su dviem (2) lentelėmis, nurodančiomis draugus ir miestus, kuriuose jie gyvena. Santykis tarp draugų ir miestų yra vienas prie kito, kurio pagrindinis ID yra miestuose esantis ID ir „city_id“ kaip užsienio raktas „pals“ lentelėse. .

Norėdami sukurti duomenų bazę, paleiskite šiuos scenarijus:

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

Dabar sukurkime miestų lentelę

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

„CodeIgniter“ duomenų bazių modeliai

Dabar sukursime savo duomenų bazės modelius. Modelis yra M dalis MVC. Modelyje nagrinėjama prieiga prie duomenų, manipuliavimas duomenimis ir verslo logika.

Programoje „CodeIgniter“ kiekvienas modelis turi apibrėžti metodus, kuriuos jis palaikys. Užuot kartoję tą patį kodą kiekviename modelyje, mes naudosime paveldėjimą programuodami į objektą ir sukursime pagrindinio modelio klasę, kurioje bus apibrėžti pagrindiniai metodai, kuriuos norime palaikyti mūsų modeliuose.

Žemiau esančioje lentelėje pateikiami metodai, kuriuos mes apibrėžsime, ir kaip bus pasiekiami duomenys.

S / N Metodas apibūdinimas
1 __konstruoti Apibrėžia konstruktoriaus metodą, kuris iškviečia pirminį konstruktoriaus metodą
2 get_all Gauna visus laukus ir įrašus iš duomenų bazės be jokių sąlygų
3 get_by_id Gauna vieną eilutę iš duomenų bazės naudodamas pirminį INT tipo raktą, pavadintą id
4 get_where Gauna visus laukus iš duomenų bazės pagal kriterijus
5 Įdėti Įterpia naują įrašą į duomenų bazę
6 atnaujinti Atnaujina esamą duomenų bazės įrašą pagal pirminį INT tipo raktą, pavadintą id
7 Ištrinti Ištrina esamą įrašą iš duomenų bazės pagal pirminį INT tipo raktą, pavadintą id

Šiame paveikslėlyje parodyta klasės diagrama ir tai, kaip vaikų modeliai „Pals“ ir „Miestai“ yra susiję su pagrindiniu modeliu „BaseModel“.

Mes sukursime du modelius, aprašytus aukščiau esančiame paveikslėlyje

Sukurkite naują „BaseModel“ klasę programoje / models / BaseModel.php

Pridėkite šį 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);}}

ČIA

  • apsaugota $ table = ''; apibrėžia saugomą kintamąjį, pavadintą lentele. Tai užpildys atitinkama vaikų klasė, nurodydama, su kuria lentele turėtų sąveikauti mūsų pagrindinio modelio klasės metodai.
  • viešoji funkcija __construct () {…} apibrėžia konstruktoriaus metodą ir vykdo pirminės klasės CI_Model konstruktoriaus metodą.
  • get_all () {…} naudoja duomenų bazės biblioteką ir kintamojo $ lentelės vertę, kad vykdytų SELECT užklausą pagal mūsų duomenų bazę.
  • get_by_id ($ id) {…} apibrėžia vienos eilutės iš duomenų bazės nuskaitymo metodą ir priima parametrą $ id, kuris turėtų būti INT duomenų tipas.
  • get_where ($ where) {…} apibrėžia gavimo metodą, leidžiantį nustatyti sąlygą kur.
  • insert ($ data) {…} apibrėžia įterpimo metodą ir priima masyvo parametrą $ data, kuriame yra į duomenų bazę įrašomos vertės.
  • update ($ id, $ data) {…} apibrėžia atnaujinimo metodą ir priima masyvo parametrą $ data, kuriame yra duomenų bazėje atnaujinamos vertės.
  • ištrinti ($ id) {…} apibrėžia ištrinimo metodą, kuris priima $ id parametrą, kuris turėtų būti duomenų tipo INT.

Dabar, kai baigėme darbą su pagrindinio modelio klase, galime sukurti savo „Pals“ modelius

Sukurkite naują failą programoje application / models / Pals.php

Pridėkite šį 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();}}

ČIA

  • „Class Pals“ praplečia „BaseModel“ {…} praplečia pirminį „BaseModel“ modelį ir automatiškai leidžia visiems „BaseModel“ apibrėžtiems metodams pasiekti vaiko klasę.
  • apsaugota $ table = 'pals'; apibrėžia lentelės pavadinimą, susietą su mūsų pagrindiniu modeliu
  • __construct () {…} inicijuoja pirminį konstruktorių
  • viešoji funkcija get_by_id ($ id) {…} nepaiso get_by_id, kad būtų galima pritaikyti pritaikymą pagal „Pals“ modelį. Užklausa „get_by_id“ naudoja prisijungimą, kad gautų miesto pavadinimą iš miestų lentelės
  • viešoji funkcija get_all () {…} nepaiso metodo get_all, kad būtų įgyvendinta prisijungimo užklausa tarp draugų ir miestų lentelės

Sukurkite naują failą aplanke application / models / Cities.php

ČIA

  • apsaugotas $ table = 'miestai'; apibrėžia modelio duomenų bazės lentelę.

Kaip matote iš aukščiau pateikto kodo, paveldėjimas mums sutaupo daug laiko dirbant su „CodeIgniter“ modeliais. Kitame skyriuje sužinosime

Kontaktų tvarkyklės valdikliai

Sukūrę modelius, sukursime savo programos valdiklius. Turėsime du valdiklius, būtent „Kontaktai“ ir „Miestai“

Pradėkime nuo miestų

Programų / valdiklių kataloge sukurkite naują failą Cities.php

Pridėkite šį 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'));}}

ČIA

  • Aukščiau pateiktas kodas įgyvendina visus metodus, kurių reikia norint sukurti, atnaujinti, ištrinti ir skaityti eilutes iš duomenų bazės.

Programoje / valdikliuose sukurkite kitą failą Contacts.php

Pridėkite šį 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'));}}

Kontaktų tvarkyklės rodiniai

Ankstesnėse pamokose jau apžvelgėme formas ir patvirtinimą „CodeIgniter“. Mes naudosime kodą, kurį sukūrėme ankstesnėse pamokose. Siekdami išsamumo, atkartosime kodą, kurį sukūrėme ankstesnėse pamokose.

Mūsų paraiškos nuomonės bus tokios

Pirmiau pateiktų rodinių kodą galite atsisiųsti spustelėdami žemiau esančią nuorodą

„CodeIgniter“ kontaktų tvarkyklės peržiūros Atsisiųsti

Santrauka

Šioje pamokoje sužinosite, kaip kurti modelius programoje „CodeIgniter“. Mes panaudojome paveldėjimą programuodami į objektą, kad paskatintume kodo pakartotinį naudojimą, sukurdami pagrindinį modelį, kuris įgyvendina keturias pagrindines duomenų bazės operacijas: įterpimą, skaitymą, atnaujinimą ir ištrynimą.

Mes pademonstravome sąvokas naudodami praktinę programą ir toliau tai darysime kitose pamokose, pridėdami daugiau funkcijų programoje.

Įdomios straipsniai...