CodeIgniter-tietokannan opetusohjelma: Luo, päivitä, poista

Sisällysluettelo:

Anonim

CodeIgniter Tietokannan kanssa työskentely

Edellisessä opetusohjelmassa olemme käsitelleet CodeIgniter-aktiivisen tietueen perusteet ja kuinka lisätä, päivittää, poistaa ja lukea tietueita tietokannasta. Tässä opetusohjelmassa luomme tietokantamalleja ja käytämme lomakkeita tietokantatietueiden luomiseen ja päivittämiseen. Jos olet täysin uusi tietokantojen käsitteleminen CodeIgniterissä, suositteli edellisen opetusohjelman lukemista

Tietokannan kokoonpano

Aloitamme luomalla opetusohjelmaprojektitietokannan. Luomme yksinkertaisen tietokannan yhteystietojen hallintaan. Luomme yksinkertaisen tietokannan, jossa on kaksi (2) taulukkoa nimet kavereille ja kaupungeille, joissa he asuvat. Kavereiden ja kaupunkien suhde on yksi-yhteen, ensisijaisina avaimina on kaupunkien tunnus ja kaupunkien tunnukset vieraanä avaimena kavereiden taulukoissa. .

Luo tietokanta suorittamalla seuraavat komentosarjat:

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

Luodaan nyt kaupunkitaulukko

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

CodeIgniter-tietokantamallit

Luomme nyt malleja tietokantaamme varten. Malli on MVC: n M-osa. Malli käsittelee tietojen käyttöä, tietojen käsittelyä ja liiketoimintalogiikkaa.

CodeIgniterissa jokaisen mallin on määriteltävä menetelmät, joita se tukee. Sen sijaan, että toistat saman koodin jokaisessa mallissa, hyödynnämme perintöä olio-ohjelmoinnissa ja luomme emomalliluokan, joka määrittelee perusmenetelmät, joita haluamme malliemme tukevan.

Alla olevassa taulukossa esitetään menetelmät, jotka määrittelemme ja miten tietoja käytetään.

S / N Menetelmä Kuvaus
1 __rakentaa Määrittää konstruktorimenetelmän, joka kutsuu emokonstruktorimenetelmän
2 get_all Hakee kaikki kentät ja tietueet tietokannasta ilman ehtoja
3 get_by_id Hakee yhden rivin tietokannasta käyttämällä INT-tyypin ensisijaista avainta nimeltä id
4 mene jonnekin Hakee kaikki kentät tietokannasta kriteerien perusteella
5 lisää Lisää uuden tietueen tietokantaan
6 päivittää Päivittää olemassa olevan tietokantatietueen INT-tyypin ensisijaisen avaimen perusteella nimeltä ID
7 poistaa Poistaa olemassa olevan tietueen tietokannasta INT-tyypin ensisijaisen avaimen perusteella, jonka nimi on id

Seuraava kuva näyttää luokkakaavion ja kuinka Pals ja Cities -lapsimallit liittyvät vanhempaan malliin BaseModel.

Luomme kaksi mallia yllä olevassa kuvassa kuvatulla tavalla

Luo uusi luokka BaseModel sovelluksessa / models / BaseModel.php

Lisää seuraava koodi

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

TÄSSÄ,

  • suojattu $ table = ''; määrittää suojatun muuttujan nimeltä taulukko. Kyseinen aliluokka täyttää tämän määrittääkseen, minkä taulukon perusmalliluokan menetelmien tulisi olla vuorovaikutuksessa.
  • public function __construct () {…} määrittelee konstruktorimenetelmän ja suorittaa emoluokan CI_Model konstruktorimenetelmän.
  • get_all () {…} käyttää tietokantakirjastoa ja muuttujan $ taulukon arvoa suorittaakseen SELECT-kyselyn tietokantaamme vastaan.
  • get_by_id ($ id) {…} määrittelee menetelmän yksittäisen rivin hakemiseksi tietokannasta ja hyväksyy parametrin $ id, jonka tulee olla INT-tietotyyppiä.
  • get_where ($ where) {…} määrittelee get-menetelmän, jonka avulla voit asettaa missä -lausekkeen.
  • insert ($ data) {…} määrittelee lisäystavan ja hyväksyy taulukon parametri $ data, joka sisältää tietokantaan kirjoitettavat arvot.
  • update ($ id, $ data) {…} määrittelee päivitystavan ja hyväksyy taulukon parametri $ data, joka sisältää tietokannassa päivitettävät arvot.
  • delete ($ id) {…} määrittelee poistomenetelmän, joka hyväksyy parametrin $ id parametrin, jonka tulisi olla tietotyyppi INT.

Nyt kun olemme tehneet emomalliluokan, voimme luoda Pals-mallimme

Luo uusi tiedosto sovellukseen / models / Pals.php

Lisää seuraava koodi

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

TÄSSÄ,

  • class Pals laajentaa BaseModelia {…} laajentaa perusmallia BaseModel ja tekee kaikkien BaseModelissa määriteltyjen menetelmien käytön alatasolle.
  • suojattu $ table = 'pals'; määrittelee vanhemman malliin liittyvän taulukon nimen
  • __construct () {…} alustaa ylärakentajan
  • julkinen toiminto get_by_id ($ id) {…} ohittaa get_by_id-tunnuksen, jotta Pals-mallille voidaan tarjota mukautettu toteutus. Get_by_id-kysely käyttää liittymistä hakemaan kaupungin nimen kaupunkitaulukosta
  • julkinen toiminto get_all () {…} ohittaa get_all-menetelmän liittymiskyselyn toteuttamiseksi kavereiden ja kaupunkien taulukon välillä

Luo uusi tiedosto sovellukseen / models / Cities.php


TÄSSÄ,

  • suojattu $ table = 'kaupungit'; määrittää mallin tietokantataulukon.

Kuten yllä olevasta koodista näet, perintö säästää paljon aikaa työskennellessäsi CodeIgniter-mallien kanssa. Seuraavassa osassa opimme

Contacts Manager -ohjaimet

Nyt kun olemme luoneet mallit, luodaan ohjaimet sovelluksellemme. Meillä on kaksi ohjainta, nimittäin Yhteystiedot ja Kaupungit

Aloitetaan kaupungeista

Luo uusi tiedosto Cities.php sovellus / ohjaimet -hakemistoon

Lisää seuraava koodi

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

TÄSSÄ,

  • Yllä oleva koodi toteuttaa kaikki tarvittavat menetelmät rivien luomiseen, päivittämiseen, poistamiseen ja lukemiseen tietokannasta.

Luo toinen tiedosto Contacts.php sovelluksessa / ohjaimissa

Lisää seuraava koodi

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

Yhteystietojen hallinnan näkymät

Olemme jo tarkastelleet lomakkeita ja validointia CodeIgniterissä edellisissä opetusohjelmissa. Käytämme koodia, jonka kehitimme edellisissä opetusohjelmissa. Täydellisyyden vuoksi toistamme aikaisemmissa opetusohjelmissa luomamme koodin.

Sovelluksemme näkemykset ovat seuraavat

Voit ladata yllä olevien näkymien koodin napsauttamalla alla olevaa linkkiä

CodeIgniter Contacts Manager -näkymät Lataa

Yhteenveto

Tässä opetusohjelmassa opit luomaan malleja CodeIgniterissä. Hyödynnimme perinnöllisyyttä olio-ohjelmoinnissa koodin uudelleenkäytettävyyden edistämiseksi luomalla perusmallin, joka toteuttaa neljä suurta tietokantatoimintoa: lisäys, lukeminen, päivittäminen ja poistaminen.

Olemme osoittaneet käsitteet käytännön sovelluksella, ja jatkamme niin seuraavissa opetusohjelmissa lisäämällä sovellukseen enemmän toimintoja.