Výukový program pre databázu CodeIgniter: Vytváranie, aktualizácia, mazanie

Obsah:

Anonim

CodeIgniter Práca s databázou

V predchádzajúcom tutoriáli sme sa venovali základom aktívneho záznamu CodeIgniter a tomu, ako vkladať, aktualizovať, mazať a čítať záznamy z databázy. V tomto tutoriáli vytvoríme databázové modely a pomocou formulárov vytvoríme a aktualizujeme databázové záznamy. Ak ste v práci s databázami v CodeIgniteri úplne nová, odporúčame vám prečítať si predchádzajúci návod

Konfigurácia databázy

Začneme vytvorením databázy výučbového projektu. Vytvoríme jednoduchú databázu pre správu kontaktných údajov. Vytvoríme jednoduchú databázu s dvoma (2) tabuľkami, ktoré pomenujú kamarátov a mestá, v ktorých žijú. Vzťah medzi kamarátmi a mestami je dvojaký s identifikáciou id v mestách ako primárnym kľúčom a city_id ako cudzím kľúčom v tabuľkách kamarátov. .

Spustením nasledujúcich skriptov vytvorte databázu:

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

Vytvorme teraz tabuľku miest

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

CodeIgniter Databázové modely

Teraz vytvoríme modely pre našu databázu. Model je M časťou MVC. Model sa zaoberá prístupom k údajom, manipuláciou s údajmi a obchodnou logikou.

V aplikácii CodeIgniter musí každý model definovať metódy, ktoré bude podporovať. Namiesto toho, aby sme v každom modeli opakovali rovnaký kód, využijeme dedenie v objektovo orientovanom programovaní a vytvoríme triedu nadradeného modelu, ktorá bude definovať základné metódy, ktoré chceme, aby naše modely podporovali.

Nasledujúca tabuľka zobrazuje metódy, ktoré definujeme a spôsob prístupu k údajom.

S / N Metóda Popis
1 __construct Definuje metódu konštruktora, ktorá volá nadradenú metódu konštruktora
2 získať všetko Načíta všetky polia a záznamy z databázy bez akýchkoľvek podmienok
3 get_by_id Načíta jeden riadok z databázy pomocou primárneho kľúča typu INT s názvom id
4 dostať_kdekoľvek Načíta všetky polia z databázy na základe kritérií založených na kritériách
5 vložiť Vloží nový záznam do databázy
6 aktualizovať Aktualizuje existujúci záznam databázy na základe primárneho kľúča typu INT s názvom id
7 vymazať Odstráni existujúci záznam z databázy na základe primárneho kľúča typu INT s názvom id

Na nasledujúcom obrázku je znázornený diagram tried a to, ako sa podradné modely Pals and Cities vzťahujú k nadradenému modelu BaseModel.

Podľa popisu na obrázku vyššie vytvoríme dva modely

Vytvorte novú triedu BaseModel v aplikácii / models / BaseModel.php

Pridajte nasledujúci kód

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

TU,

  • protected $ table = ''; definuje chránenú premennú s názvom tabuľka. Toto vyplní príslušná podradená trieda, aby určila, s ktorou tabuľkou by mali naše metódy triedy základných modelov interagovať.
  • verejná funkcia __construct () {…} definuje metódu konštruktora a vykoná metódu konštruktora nadradenej triedy CI_Model.
  • get_all () {…} používa databázovú knižnicu a hodnotu premennej $ table na spustenie dotazu SELECT proti našej databáze.
  • get_by_id ($ id) {…} definuje metódu načítania jedného riadku z databázy a akceptuje parameter $ id, ktorý by mal byť dátového typu INT.
  • get_where ($ where) {…} definuje metódu get, ktorá umožňuje nastaviť klauzulu where.
  • insert ($ data) {…} definuje metódu insert a akceptuje parameter poľa $ data, ktorý obsahuje hodnoty, ktoré sa majú zapísať do databázy.
  • update ($ id, $ data) {…} definuje metódu aktualizácie a akceptuje parameter poľa $ data, ktorý obsahuje hodnoty, ktoré sa majú aktualizovať v databáze.
  • delete ($ id) {…} definuje metódu mazania, ktorá akceptuje parameter $ id, ktorý by mal byť dátového typu INT.

Teraz, keď sme hotoví s triedou rodičovských modelov, poďme vytvoriť naše modely Pals

Vytvorte nový súbor v aplikácii / models / Pals.php

Pridajte nasledujúci kód

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

TU,

  • class Pals extends BaseModel {…} extends the parent model BaseModel and automatically makes all the methods defined in the BaseModel accessed to the child class.
  • protected $ table = 'pals'; definuje názov tabuľky spojenej s našim nadradeným modelom
  • __construct () {…} inicializuje nadradený konštruktor
  • verejná funkcia get_by_id ($ id) {…} prepíše get_by_id a poskytne vlastnú implementáciu špecifickú pre model Pals. Dotaz na get_by_id používa spojenie na získanie názvu mesta z tabuľky miest
  • verejná funkcia get_all () {…} prepíše metódu get_all na implementáciu dotazu na spojenie medzi tabuľkou kamarátov a miest

Vytvorte nový súbor v aplikácii / models / Cities.php


TU,

  • protected $ table = 'cities'; definuje modelovú databázovú tabuľku.

Ako môžete vidieť z vyššie uvedeného kódu, Inheritance nám pri práci s modelmi v CodeIgniter šetrí veľa času. V ďalšej časti sa dozvieme

Správcovia kontaktov

Teraz, keď sme vytvorili modely, vytvorme radiče pre našu aplikáciu. Budeme mať dvoch kontrolórov, a to Kontakty a Mestá

Začnime mestami

Vytvorte nový súbor Cities.php v adresári application / controllers

Pridajte nasledujúci kód

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

TU,

  • Vyššie uvedený kód implementuje všetky metódy potrebné na vytváranie, aktualizáciu, mazanie a čítanie riadkov z databázy.

Vytvorte ďalší súbor Contacts.php v aplikácii / radičoch

Pridajte nasledujúci kód

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

Zobrazenia správcu kontaktov

Na formuláre a overovanie v CodeIgniter sme sa už pozreli v predchádzajúcich tutoriáloch. Použijeme kód, ktorý sme vyvinuli v predchádzajúcich tutoriáloch. Pre úplnosť, budeme reprodukovať kód, ktorý sme vytvorili v predchádzajúcich tutoriáloch.

Názory našej aplikácie budú nasledujúce

Kliknutím na odkaz dole si môžete stiahnuť kód pre vyššie uvedené zobrazenia

Správca kontaktov CodeIgniter Zobrazenia Stiahnutie

Zhrnutie

V tomto tutoriáli sa dozviete, ako vytvárať modely v aplikácii CodeIgniter. Využili sme dedičnosť v objektovo orientovanom programovaní na podporu opätovného použitia kódu vytvorením základného modelu, ktorý implementuje štyri hlavné databázové operácie vkladania, čítania, aktualizácie a mazania.

Koncepty sme demonštrovali pomocou praktickej aplikácie a budeme v tom pokračovať v ďalších tutoriáloch pridaním ďalších funkcií do aplikácie.