CodeIgniter datu bāzes apmācība: izveidošana, atjaunināšana, dzēšana

Satura rādītājs:

Anonim

CodeIgniter Darbs ar datu bāzi

Iepriekšējā apmācībā mēs apskatījām CodeIgniter aktīvā ieraksta pamatus un to, kā ierakstus ievietot, atjaunināt, dzēst un lasīt no datu bāzes. Šajā apmācībā mēs izveidosim datu bāzes modeļus un izmantosim veidlapas, lai izveidotu un atjauninātu datu bāzes ierakstus. ja esat pilnīgi jauns, lai strādātu ar datu bāzēm programmā CodeIgniter, ieteicams ieteikt izlasīt iepriekšējo apmācību

Datu bāzes konfigurācija

Mēs sāksim ar apmācības projekta datu bāzes izveidošanu. Mēs izveidosim vienkāršu datu bāzi, lai pārvaldītu kontaktinformāciju. Mēs izveidosim vienkāršu datu bāzi ar divām (2) tabulām, kurās tiek nosaukti draugi un pilsētas, kurās viņi dzīvo. Attiecības starp draugiem un pilsētām ir viens pret vienu ar identifikāciju pilsētās kā primāro atslēgu un city_id kā ārējo atslēgu pals tabulās. .

Lai izveidotu datu bāzi, palaidiet šādus skriptus:

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

Tagad izveidosim pilsētu tabulu

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

CodeIgniter datu bāzes modeļi

Tagad mēs izveidosim modeļus savai datu bāzei. Modelis ir MVC M daļa. Modelis nodarbojas ar piekļuvi datiem, manipulācijām ar datiem un biznesa loģiku.

Programmā CodeIgniter katram modelim ir jādefinē metodes, kuras tas atbalstīs. Tā vietā, lai katrā modelī atkārtotu vienu un to pašu kodu, mēs izmantosim mantojuma priekšrocības objektorientētā programmēšanā un izveidosim vecāku modeļu klasi, kas definēs pamatmetodes, kuras mēs vēlamies atbalstīt mūsu modeļos.

Zemāk esošajā tabulā ir parādītas metodes, kuras mēs definēsim, un kā datiem varēs piekļūt.

S / N Metode Apraksts
1 __konstruēt Definē konstruktora metodi, kas izsauc vecākā konstruktora metodi
2 get_all Izgūst visus laukus un ierakstus no datu bāzes bez jebkādiem nosacījumiem
3 get_by_id Izgūst vienu rindu no datu bāzes, izmantojot INT tipa primāro atslēgu ar nosaukumu id
4 nokļūt_kur Izgūst visus laukus no datu bāzes, pamatojoties uz kritērijiem
5 ievietot Ievieto jaunu ierakstu datu bāzē
6 Atjaunināt Atjaunina esošu datu bāzes ierakstu, pamatojoties uz INT tipa primāro atslēgu ar nosaukumu id
7 dzēst Izdzēš esošo datu ierakstu no datu bāzes, pamatojoties uz INT tipa primāro atslēgu ar nosaukumu id

Šajā attēlā ir parādīta klases diagramma un tas, kā bērnu modeļi Pals un Cities ir saistīti ar vecāku modeli BaseModel.

Mēs izveidosim divus modeļus, kā aprakstīts iepriekšējā attēlā

Izveidojiet jaunu klasi BaseModel lietojumprogrammā / models / BaseModel.php

Pievienojiet šādu kodu

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

ŠEIT,

  • aizsargāta $ tabula = ''; definē aizsargātu mainīgo tabulu. To aizpildīs attiecīgā bērnu klase, lai norādītu, ar kuru tabulu būtu jāsadarbojas mūsu bāzes modeļa klases metodēm.
  • publiskā funkcija __construct () {…} nosaka konstruktora metodi un izpilda vecāku klases CI_Model konstruktora metodi.
  • get_all () {…} izmanto datu bāzes bibliotēku un mainīgā $ table vērtību, lai palaistu SELECT vaicājumu pret mūsu datu bāzi.
  • get_by_id ($ id) {…} nosaka metodi vienas rindas izgūšanai no datu bāzes un pieņem parametru $ id, kuram jābūt INT datu tipam.
  • get_where ($ kur) {…} nosaka iegūšanas metodi, kas ļauj iestatīt klauzulu kur.
  • insert ($ data) {…} nosaka ievietošanas metodi un pieņem masīva parametru $ data, kas satur datu bāzē ierakstāmās vērtības.
  • update ($ id, $ data) {…} nosaka atjaunināšanas metodi un pieņem masīva parametru $ data, kas satur datu bāzē atjaunināmās vērtības.
  • dzēst ($ id) {…} definē dzēšanas metodi, kas pieņem $ id parametru, kuram jābūt INT tipa.

Tagad, kad esam pabeiguši vecāku modeļu klasi, ļauj izveidot mūsu Pals modeļus

Izveidojiet jaunu failu lietojumprogrammā / models / Pals.php

Pievienojiet šādu kodu

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

ŠEIT,

  • klase Pals paplašina BaseModel {…}, paplašina vecāku modeli BaseModel un automātiski nodrošina visām BaseModel definētajām metodēm piekļuvi bērnu klasei.
  • aizsargāta $ table = 'pals'; nosaka tabulas nosaukumu, kas saistīts ar mūsu vecāku modeli
  • __construct () {…} inicializē vecāku konstruktoru
  • public function get_by_id ($ id) {…} ignorē get_by_id, lai nodrošinātu pielāgotu ieviešanu, kas raksturīga Pals modelim. Vaicājums get_by_id izmanto savienojumu, lai izgūtu pilsētas nosaukumu no tabulas
  • publiskā funkcija get_all () {…} ignorē metodi get_all, lai ieviestu pievienošanās vaicājumu starp draugu un pilsētu tabulu

Izveidojiet jaunu failu lietojumprogrammā / models / Cities.php


ŠEIT,

  • aizsargāta $ tabula = 'pilsētas'; definē modeļa datu bāzes tabulu.

Kā redzat no iepriekš norādītā koda, mantojums mums ietaupa daudz laika, strādājot ar modeļiem CodeIgniter. Nākamajā sadaļā mēs iemācīsimies

Kontaktu pārvaldnieka kontrolieri

Tagad, kad esam izveidojuši modeļus, izveidosim mūsu lietojumprogrammas kontrollerus. Mums būs divi kontrolieri, proti, Kontakti un Pilsētas

Sāksim ar pilsētām

Lietojumprogrammu / kontrolieru direktorijā izveidojiet jaunu failu Cities.php

Pievienojiet šādu kodu

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

ŠEIT,

  • Iepriekš minētais kods ievieš visas metodes, kas nepieciešamas, lai izveidotu, atjauninātu, dzēstu un lasītu rindas no datu bāzes.

Lietojumprogrammā / kontrolieros izveidojiet citu failu Contacts.php

Pievienojiet šādu kodu

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

Kontaktu pārvaldnieka skati

Mēs jau izskatījām veidlapas un validāciju CodeIgniter iepriekšējās apmācībās. Mēs izmantosim kodu, kuru izstrādājām iepriekšējās apmācībās. Pilnības labad mēs reproducēsim kodu, kuru izveidojām iepriekšējās apmācībās.

Mūsu pieteikuma viedokļi būs šādi

Iepriekš minēto skatu kodu varat lejupielādēt, noklikšķinot uz saites, kas atrodas zemāk

CodeIgniter kontaktu pārvaldnieks skata lejupielādi

Kopsavilkums

Šajā apmācībā jūs uzzināsiet, kā izveidot modeļus programmā CodeIgniter. Mēs izmantojām mantojuma priekšrocības objektorientētā programmēšanā, lai veicinātu koda atkārtotu izmantošanu, izveidojot bāzes modeli, kas īsteno četras galvenās datu bāzes darbības - ievietošanu, lasīšanu, atjaunināšanu un dzēšanu.

Mēs esam parādījuši koncepcijas, izmantojot praktisku lietojumu, un mēs to turpināsim darīt arī nākamajās apmācībās, pievienojot lietojumprogrammai vairāk funkcionalitātes.