Výukový program pro databázi CodeIgniter: Vytváření, aktualizace, mazání

Obsah:

Anonim

CodeIgniter Práce s databází

V předchozím kurzu jsme se seznámili se základy aktivního záznamu CodeIgniter a o tom, jak vkládat, aktualizovat, mazat a číst záznamy z databáze. V tomto kurzu vytvoříme databázové modely a pomocí formulářů vytvoříme a aktualizujeme databázové záznamy. pokud jste v práci s databázemi v CodeIgniteru zcela nová, doporučil jste si přečíst předchozí tutoriál

Konfigurace databáze

Začneme vytvořením databáze výukového projektu. Vytvoříme jednoduchou databázi pro správu kontaktních údajů. Vytvoříme jednoduchou databázi se dvěma (2) názvy tabulek pals a městy, ve kterých žijí. Vztah mezi pals a městy je jedna ku jedné s id ve městech jako primárním klíčem a city_id jako cizím klíčem v pals tabulkách .

Spuštěním následujících skriptů vytvořte databázi:

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

Nyní vytvořme tabulku měst

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

CodeIgniter databázové modely

Nyní vytvoříme modely pro naši databázi. Model je M součástí MVC. Model se zabývá přístupem k datům, manipulací s daty a obchodní logikou.

V CodeIgniter musí každý model definovat metody, které bude podporovat. Místo opakování stejného kódu v každém modelu využijeme dědičnost v objektově orientovaném programování a vytvoříme třídu nadřazeného modelu, která bude definovat základní metody, které chceme, aby naše modely podporovaly.

V tabulce níže jsou uvedeny metody, které definujeme, a způsob přístupu k datům.

S / N Metoda Popis
1 __postavit Definuje metodu konstruktoru, která volá nadřazenou metodu konstruktoru
2 dostat všechny Načte všechna pole a záznamy z databáze bez jakýchkoli podmínek
3 get_by_id Načte jeden řádek z databáze pomocí primárního klíče typu INT s názvem id
4 dostat_ kam Načte všechna pole z databáze na základě kritérií založených na
5 vložit Vloží nový záznam do databáze
6 Aktualizace Aktualizuje existující záznam databáze na základě primárního klíče typu INT s názvem id
7 vymazat Odstraní existující záznam z databáze na základě primárního klíče typu INT s názvem id

Následující obrázek ukazuje diagram tříd a to, jak se podřízené modely Pals and Cities vztahují k nadřazenému modelu BaseModel.

Vytvoříme dva modely, jak je popsáno na obrázku výše

Vytvořte novou třídu BaseModel v application / models / BaseModel.php

Přidejte následující 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);}}

TADY,

  • protected $ table = ''; definuje chráněnou proměnnou s názvem tabulka. To bude vyplněno příslušnou podřízenou třídou k určení, s jakou tabulkou by měly naše metody tříd základních modelů interagovat.
  • public function __construct () {…} definuje metodu konstruktoru a provede metodu konstruktoru nadřazené třídy CI_Model.
  • get_all () {…} používá knihovnu databáze a hodnotu proměnné $ table ke spuštění dotazu SELECT proti naší databázi.
  • get_by_id ($ id) {…} definuje metodu načítání jednoho řádku z databáze a přijímá parametr $ id, který by měl být datového typu INT.
  • get_where ($ where) {…} definuje metodu get, která vám umožní nastavit klauzuli where.
  • insert ($ data) {…} definuje metodu insert a přijímá parametr pole $ data, který obsahuje hodnoty, které mají být zapsány do databáze.
  • update ($ id, $ data) {…} definuje metodu aktualizace a přijímá parametr pole $ data, který obsahuje hodnoty, které mají být aktualizovány v databázi.
  • delete ($ id) {…} definuje metodu mazání, která přijímá parametr $ id, který by měl být datového typu INT.

Nyní, když jsme hotovi s třídou nadřazeného modelu, pojďme vytvořit naše modely Pals

Vytvořte nový soubor v application / models / Pals.php

Přidejte následující 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();}}

TADY,

  • 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ázev tabulky přidružený k našemu nadřazenému modelu
  • __construct () {…} inicializuje nadřazený konstruktor
  • public function get_by_id ($ id) {…} přepíše get_by_id a poskytne vlastní implementaci specifickou pro model Pals. Dotaz na get_by_id používá spojení k načtení názvu města z tabulky měst
  • public function get_all () {…} přepíše metodu get_all k implementaci dotazu na spojení mezi tabulkou kamarádů a měst

Vytvořte nový soubor v application / models / Cities.php


TADY,

  • protected $ table = 'cities'; definuje tabulku databáze modelů.

Jak můžete vidět z výše uvedeného kódu, Inheritance nám ušetří spoustu času při práci s modely v CodeIgniteru. V další části se dozvíme

Správci kontaktů

Teď, když jsme vytvořili modely, vytvořme řadiče pro naši aplikaci. Budeme mít dva správce, jmenovitě Kontakty a Města

Začněme městy

Vytvořte nový soubor Cities.php v adresáři aplikace / řadiče

Přidejte následující 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'));}}

TADY,

  • Výše uvedený kód implementuje všechny metody potřebné k vytváření, aktualizaci, mazání a čtení řádků z databáze.

Vytvořte další soubor Contacts.php v aplikaci / řadičích

Přidejte následující 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'));}}

Zobrazení správce kontaktů

Již jsme se podívali na formuláře a ověření v CodeIgniteru v předchozích kurzech. Použijeme kód, který jsme vyvinuli v předchozích výukových programech. Pro úplnost budeme reprodukovat kód, který jsme vytvořili v předchozích tutoriálech.

Názory naší aplikace budou následující

Kliknutím na odkaz níže si můžete stáhnout kód pro výše uvedená zobrazení

CodeIgniter Správce kontaktů Zobrazení Stáhnout

souhrn

V tomto kurzu se naučíte, jak vytvářet modely v CodeIgniter. Využili jsme dědičnost v objektově orientovaném programování, abychom podpořili opětovnou použitelnost kódu vytvořením základního modelu, který implementuje čtyři hlavní databázové operace vkládání, čtení, aktualizace a mazání.

Ukázali jsme koncepty pomocí praktické aplikace a budeme v tom pokračovat v dalších kurzech přidáním dalších funkcí do aplikace.