CodeIgniter Arbejder med database
I den foregående vejledning har vi dækket det grundlæggende i CodeIgniter aktiv post og hvordan man indsætter, opdaterer, sletter og læser poster fra databasen. I denne vejledning opretter vi databasemodeller og bruger formularer til at oprette og opdatere databaseposter. hvis du er helt ny med at arbejde med databaser i CodeIgniter, rådede du dig til at læse den foregående vejledning
Databasekonfiguration
Vi starter med at oprette tutorial-projektdatabasen. Vi opretter en enkel database til styring af kontaktoplysninger. Vi opretter en simpel database med to (2) tabeller med navne på venner og byer, som de bor i. Forholdet mellem venner og byer er en-til-en med id i byer som den primære nøgle og city_id som den fremmede nøgle i vennetabeller .
Kør følgende scripts for at oprette databasen:
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`));
Lad os nu oprette bytabellen
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
CodeIgniter databasemodeller
Vi opretter nu modeller til vores database. Modellen er M-delen af MVC. Modellen beskæftiger sig med dataadgang, datamanipulation og forretningslogik.
I CodeIgniter skal hver model definere de metoder, den understøtter. I stedet for at gentage den samme kode i hver model, drager vi fordel af arv i objektorienteret programmering og opretter en overordnet modelklasse, der definerer de grundlæggende metoder, som vi ønsker, at vores modeller understøtter.
Tabellen nedenfor viser de metoder, som vi definerer, og hvordan data skal tilgås.
S / N | Metode | Beskrivelse |
1 | __konstruere | Definerer den konstruktormetode, der kalder den overordnede konstruktormetode |
2 | get_all | Henter alle felter og poster fra databasen uden nogen betingelser |
3 | get_by_id | Henter en enkelt række fra databasen ved hjælp af den primære nøgle af INT-typen med navnet id |
4 | get_where | Henter alle felter fra databasen baseret på kriterierne baseret på |
5 | indsæt | Indsætter en ny post i databasen |
6 | opdatering | Opdaterer en eksisterende databasepost baseret på den primære nøgle af INT-typen med navnet id |
7 | slet | Sletter en eksisterende post fra databasen baseret på den primære nøgle af INT-typen med navnet id |
Det følgende billede viser klassediagrammet og hvordan Pals and Cities underordnede modeller forholder sig til den overordnede model BaseModel.
Vi opretter to modeller som beskrevet i ovenstående billede
Opret en ny klasse BaseModel i applikation / modeller / BaseModel.php
Tilføj følgende kode
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);}}
HER,
- beskyttet $ tabel = ''; definerer en beskyttet variabel med navnet tabel. Dette udfyldes af den respektive underordnede klasse for at specificere, hvilken tabel vores basismodel klassemetoder skal interagere med.
- offentlig funktion __construct () {...} definerer konstruktormetoden og udfører konstruktormetoden i den overordnede klasse CI_Model.
- get_all () {…} bruger databasebiblioteket og værdien af variablen $ $ til at køre SELECT-forespørgslen mod vores database.
- get_by_id ($ id) {...} definerer metoden til at hente en enkelt række fra databasen og accepterer en parameter $ id, der skal være af INT-datatype.
- get_where ($ hvor) {...} definerer get-metoden, der giver dig mulighed for at indstille en hvor-klausul.
- indsæt ($ data) {…} definerer indsætningsmetoden og accepterer arrayparameteren $ data, der indeholder de værdier, der skal skrives til databasen.
- opdatering ($ id, $ data) {…} definerer opdateringsmetoden og accepterer arrayparameteren $ data, der indeholder de værdier, der skal opdateres i databasen.
- delete ($ id) {…} definerer den sletningsmetode, der accepterer en parameter på $ id, der skal være af datatypen INT.
nu hvor vi er færdige med den overordnede modelklasse, kan vi oprette vores Pals-modeller
Opret en ny fil i applikationen / modeller / Pals.php
Tilføj følgende kode
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();}}
HER,
- klasse Pals udvider BaseModel {...} udvider den overordnede model BaseModel og giver automatisk adgang til alle de metoder, der er defineret i BaseModel, til underordnet klasse.
- beskyttet $ tabel = 'venner'; definerer det tabelnavn, der er knyttet til vores overordnede model
- __construct () {...} initialiserer den overordnede konstruktør
- offentlig funktion get_by_id ($ id) {...} tilsidesætter get_by_id for at give brugerdefineret implementering, der er specifik for Pals-modellen. Forespørgslen efter get_by_id bruger en join for at hente bynavnet fra bytabellen
- public function get_all () {...} tilsidesætter get_all-metoden for at implementere en joinforespørgsel mellem venner og bytabeller
Opret en ny fil i applikationen / modeller / Cities.php
HER,
- beskyttet $ tabel = 'byer'; definerer modeldatabasetabellen.
Som du kan se fra ovenstående kode sparer Arv os meget tid, når vi arbejder med modeller i CodeIgniter. I det næste afsnit vil vi lære
Kontakter Manager-controllere
Nu hvor vi har oprettet modellerne, lad os oprette controllere til vores applikation. Vi har to controllere, nemlig kontakter og byer
Lad os starte med byer
Opret en ny fil Cities.php i applikations- / controllermappen
Tilføj følgende kode
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'));}}
HER,
- Ovenstående kode implementerer alle de behov, der er behov for, for at oprette, opdatere, slette og læse rækker fra databasen.
Opret en anden fil Contacts.php i applikation / controllere
Tilføj følgende kode
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'));}}
Kontakter Manager visninger
Vi har allerede set på formularer og validering i CodeIgniter i de foregående tutorials. Vi bruger den kode, som vi udviklede i de foregående tutorials. For fuldstændighedens skyld reproducerer vi den kode, vi oprettede i de foregående tutorials.
Synspunkterne i vores ansøgning vil være som følger
Du kan downloade koden til ovenstående visninger ved at klikke på linket nedenunder
CodeIgniter Kontakter Manager visninger Download
Resumé
I denne vejledning lærer du, hvordan du opretter modeller i CodeIgniter. Vi udnyttede arv i objektorienteret programmering for at fremme genanvendelighed af kode ved at skabe en basismodel, der implementerer de fire store databaseoperationer ved indsættelse, læsning, opdatering og sletning.
Vi har demonstreret begreberne ved hjælp af en praktisk anvendelse, og vi fortsætter med at gøre det i de næste selvstudier ved at tilføje mere funktionalitet til applikationen.