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.