CodeIgniter-databashandledning: Skapa, uppdatera, ta bort

Innehållsförteckning:

Anonim

CodeIgniter Arbeta med databas

I föregående handledning har vi täckt grunderna i CodeIgniter aktiv post och hur man infogar, uppdaterar, tar bort och läser poster från databasen. I denna handledning skapar vi databasmodeller och använder formulär för att skapa och uppdatera databasposter. om du är helt ny på att arbeta med databaser i CodeIgniter, rekommenderar vi att du läser den tidigare självstudien

Databaskonfiguration

Vi börjar med att skapa handledningsprojektdatabasen. Vi skapar en enkel databas för hantering av kontaktuppgifter. Vi kommer att skapa en enkel databas med två (2) tabeller namn på kompisar och städer som de bor i. Förhållandet mellan kompisar och städer är en-mot-en med id i städer som primärnyckel och city_id som främmande nyckel i kompattabeller .

Kör följande skript för att skapa 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`));

Låt oss nu skapa stadstabellen

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

CodeIgniter databasmodeller

Vi kommer nu att skapa modeller för vår databas. Modellen är M-delen av MVC. Modellen handlar om datatillgång, datamanipulation och affärslogik.

I CodeIgniter måste varje modell definiera de metoder som den stöder. Istället för att upprepa samma kod i varje modell kommer vi att dra nytta av arv i objektorienterad programmering och skapa en överordnad modellklass som definierar de grundläggande metoderna som vi vill att våra modeller ska stödja.

Tabellen nedan visar de metoder som vi kommer att definiera och hur data kommer åt.

S / N Metod Beskrivning
1 __konstruera Definierar konstruktormetoden som anropar den moderna konstruktormetoden
2 få alla Hämtar alla fält och poster från databasen utan några villkor
3 get_by_id Hämtar en enda rad från databasen med den primära nyckeln av INT-typ med namnet id
4 get_where Hämtar alla fält från databasen baserat på kriterierna
5 Föra in Infogar en ny post i databasen
6 uppdatering Uppdaterar en befintlig databaspost baserat på den primära nyckeln av INT-typen med namnet id
7 radera Tar bort en befintlig post från databasen baserat på den primära nyckeln av INT-typ med namnet id

Följande bild visar klassdiagrammet och hur Pals and Cities underordnade modeller relaterar till modermodellen BaseModel.

Vi kommer att skapa två modeller som beskrivs i bilden ovan

Skapa en ny klass BaseModel i applikation / modeller / BaseModel.php

Lägg till följande 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);}}

HÄR,

  • skyddad $ table = ''; definierar en skyddad variabel med namnet tabell. Detta kommer att fyllas i respektive underklass för att specificera vilken tabell våra basmodell klassmetoder ska interagera med.
  • offentlig funktion __construct () {...} definierar konstruktormetoden och kör konstruktormetoden i överordnad klass CI_Model.
  • get_all () {...} använder databasbiblioteket och värdet på variabeln $ $ för att köra SELECT-frågan mot vår databas.
  • get_by_id ($ id) {...} definierar metoden för att hämta en enda rad från databasen och accepterar en parameter $ id som ska vara av INT-datatyp.
  • get_where ($ där) {...} definierar get-metoden som låter dig ställa in en var-sats.
  • infoga ($ data) {...} definierar infogningsmetoden och accepterar arrayparametern $ data som innehåller de värden som ska skrivas till databasen.
  • uppdatering ($ id, $ data) {...} definierar uppdateringsmetoden och accepterar arrayparametern $ data som innehåller värdena som ska uppdateras i databasen.
  • delete ($ id) {…} definierar borttagningsmetoden som accepterar en parameter på $ id som ska vara av datatyp INT.

nu när vi är klara med modermodellklassen kan vi skapa våra Pals-modeller

Skapa en ny fil i applikationen / modeller / Pals.php

Lägg till följande 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();}}

HÄR,

  • klass Pals utökar BaseModel {...} utökar modermodellen BaseModel och gör automatiskt tillgång till alla metoder som definierats i BaseModel till underklassen.
  • skyddad $ table = 'kompisar'; definierar tabellnamnet som är kopplat till vår överordnade modell
  • __construct () {...} initialiserar den överordnade konstruktören
  • offentlig funktion get_by_id ($ id) {...} åsidosätter get_by_id för att tillhandahålla anpassad implementering som är specifik för Pals-modellen. Frågan för get_by_id använder en join för att hämta stadsnamnet från städerna
  • public function get_all () {...} åsidosätter get_all-metoden för att implementera en kopplingsfråga mellan kompisar och städer

Skapa en ny fil i applikationen / modeller / Cities.php


HÄR,

  • skyddad $ table = 'städer'; definierar modelldatabasstabellen.

Som du kan se från ovanstående kod sparar Arv oss mycket tid när vi arbetar med modeller i CodeIgniter. I nästa avsnitt kommer vi att lära oss

Kontakter Manager-kontroller

Nu när vi har skapat modellerna ska vi skapa kontroller för vår applikation. Vi kommer att ha två styrenheter, nämligen kontakter och städer

Låt oss börja med städer

Skapa en ny fil Cities.php i katalogen applikation / styrenhet

Lägg till följande 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'));}}

HÄR,

  • Ovanstående kod implementerar alla metodbehov för att skapa, uppdatera, ta bort och läsa rader från databasen.

Skapa en annan fil Kontakter.php i applikation / styrenheter

Lägg till följande 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'));}}

Kontakter Manager vyer

Vi har redan tittat på formulär och validering i CodeIgniter i de tidigare självstudierna. Vi kommer att använda koden som vi utvecklade i föregående handledning. För fullständighetens skull kommer vi att reproducera koden som vi skapade i de tidigare självstudierna.

Synpunkterna i vår ansökan kommer att vara följande

Du kan ladda ner koden för ovanstående vyer genom att klicka på länken nedan

CodeIgniter Kontakter Manager Visningar Ladda ner

Sammanfattning

I den här självstudien lär du dig hur du skapar modeller i CodeIgniter. Vi utnyttjade arv i objektorienterad programmering för att främja återanvändbar kod genom att skapa en basmodell som implementerar de fyra viktigaste databasåtgärderna för att infoga, läsa, uppdatera och radera.

Vi har demonstrerat koncepten med en praktisk tillämpning och vi kommer att fortsätta göra det i nästa handledning genom att lägga till mer funktionalitet i applikationen.