CodeIgniteri andmebaas: konfigureerimine, redigeerimine, värskendamine, andmete kustutamine
Codeigniteri andmebaas
Eelmises õpetuses oleme käsitlenud CodeIgniteri aktiivse kirje põhitõdesid ning kirjete sisestamist, värskendamist, kustutamist ja lugemist andmebaasist. Selles õpetuses loome andmebaasimudelid ja kasutame vorme andmebaasikirjete loomiseks ja värskendamiseks. kui olete CodeIgniteri andmebaasidega töötamises täiesti uus, soovitasite lugeda eelmist õpetust
Codeigniteri andmebaasi konfiguratsioon
Alustame õppeprojektide andmebaasi loomisega. Loome lihtsa andmebaasi kontaktandmete haldamiseks. Loome kahe (2) tabeliga lihtsa andmebaasi sõprade ja linnade nimedega, kus nad elavad. Sõprade ja linnade suhe on üks-ühele, kus linnades on primaarvõti id ja pals tabelites võõrvõti city_id .
Andmebaasi loomiseks käivitage järgmised skriptid:
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`) );
Loome nüüd linnade tabeli
CREATE TABLE `cities` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ;
CodeIgniteri andmebaasimudelid
Nüüd loome oma andmebaasi mudelid. Mudel on M-osa MVC. Mudel käsitleb andmetele juurdepääsu, andmetega manipuleerimist ja äriloogikat.
CodeIgniteris peab iga mudel määratlema meetodid, mida see toetab. Selle asemel, et korrata igas mudelis sama koodi, kasutame objektorienteeritud programmeerimisel pärilikkust ja loome põhimudeli klassi, mis määratleb põhimeetodid, mida soovime, et meie mudelid toetaksid.
Allolev tabel näitab meetodeid, mille me määratleme ja kuidas andmetele juurde pääseb.
S / N | Meetod | Kirjeldus |
---|---|---|
1 | __ ehitama | Määrab konstruktori meetodi, mis kutsub välja emakonstruktori meetodi |
2 | hanki_kõik | Otsib andmebaasist kõik väljad ja kirjed ilma tingimusteta |
3 | get_by_id | Toob andmebaasist ühe rea, kasutades INT tüüpi primaarvõtit nimega id |
4 | get_where | Otsib andmebaasist kõik väljad kriteeriumide alusel |
5 | sisestada | Lisab andmebaasi uue kirje |
6 | ajakohastama | Värskendab olemasolevat andmebaasikirjet INT-tüüpi primaarvõtme nimega id alusel |
7 | kustutama | Kustutab olemasoleva kirje andmebaasist INT tüüpi primaarvõtme nimega id alusel |
Järgmine pilt näitab klassidiagrammi ja seda, kuidas Pals ja Cities alammudelid on seotud emamudeliga BaseModel.
Loome kaks mudelit, nagu on kirjeldatud ülaltoodud pildil
Looge rakenduses/models/BaseModel.php uus klass BaseModel
Lisage järgmine kood
<?php class BaseModel extends CI_Model { protected $table = ''; public function __construct() { parent::__construct(); } public function get_all() { return $this->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); } }
SIIN,
- kaitstud $tabel = ”; defineerib kaitstud muutuja nimega tabeli. Selle täidab vastav alamklass, et määrata, millise tabeliga meie baasmudeli klassimeetodid peaksid suhtlema.
- avalik funktsioon __construct() {…} defineerib konstruktorimeetodi ja käivitab vanemklassi CI_Model konstruktorimeetodi.
- get_all() {…} kasutab andmebaasi teeki ja muutuja $table väärtust, et käivitada SELECT päring meie andmebaasis.
- get_by_id($id) {…} määrab meetodi ühe rea toomiseks andmebaasist ja aktsepteerib parameetri $id, mis peaks olema INT andmetüübiga.
- get_where($where) {…} defineerib hankimismeetodi, mis võimaldab määrata kuhu-klausli.
- insert($data) {…} määrab sisestamismeetodi ja aktsepteerib massiivi parameetri $data, mis sisaldab andmebaasi kirjutatavaid väärtusi.
- update($id, $data) {…} määrab uuendusmeetodi ja aktsepteerib massiivi parameetri $data, mis sisaldab andmebaasis värskendatavaid väärtusi.
- delete($id) {…} määrab kustutamismeetodi, mis aktsepteerib $id parameetrit, mis peaks olema andmetüübiga INT.
Nüüd, kui oleme vanemate mudeliklassiga valmis saanud, loome oma Palsi mudelid
Looge rakenduses/models/Pals.php uus fail
Lisage järgmine kood
<?php class Pals_model extends BaseModel { protected $table = 'pals'; public function __construct() { parent::__construct(); } public function get_by_id($id) { $this->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(); } }
SIIN,
- klass Pals laiendab BaseModeli {…} laiendab põhimudelit BaseModel ja muudab kõik BaseModelis määratletud meetodid automaatselt alamklassile juurdepääsuks.
- kaitstud $table = 'sõbrad'; määrab meie emamudeliga seotud tabeli nime
- __construct() {…} lähtestab emakonstruktori
- avalik funktsioon get_by_id($id) {…} alistab funktsiooni get_by_id, et pakkuda Palsi mudelile spetsiifilist kohandatud teostust. Päring get_by_id kasutab linna nime toomiseks linnade tabelist liitumist
- avalik funktsioon get_all() {…} alistab meetodi get_all, et realiseerida liitumispäring sõprade ja linnade tabeli vahel
Looge rakenduses/models/Cities.php uus fail
<?php class Cities extends BaseModel { protected $table = 'cities'; public function __construct() { parent::__construct(); } }
SIIN,
kaitstud $tabel = 'linnad'; määratleb mudeli andmebaasi tabeli.
Nagu ülaltoodud koodist näha, säästab pärand CodeIgniteris mudelitega töötades palju aega. Järgmises osas õpime
Kontaktide halduri kontrollerid
Nüüd, kui oleme mudelid loonud, loome oma rakenduse jaoks kontrollerid. Meil on kaks kontrollerit, nimelt kontaktid ja linnad
Alustame linnadest
Looge rakenduste/kontrollerite kataloogis uus fail Cities.php
Lisage järgmine kood
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Cities extends CI_Controller { public function __construct() { parent::__construct(); $this->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')); } }
SIIN,
Ülaltoodud kood rakendab kõiki meetodeid, mida on vaja andmebaasist ridade loomiseks, värskendamiseks, kustutamiseks ja lugemiseks.
Looge rakenduses/kontrollerites teine fail Contacts.php
Lisage järgmine kood
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->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')); } }
Kontaktide halduri vaated
CodeIgniteri vorme ja valideerimist vaatlesime juba eelmistes õpetustes. Kasutame koodi, mille oleme välja töötanud eelmistes õpetustes. Täielikkuse huvides reprodutseerime eelmistes õpetustes loodud koodi.
Meie taotluse seisukohad on järgmised
Ülaltoodud vaadete koodi saate alla laadida, klõpsates alloleval lingil
CodeIgniteri kontaktide halduri vaated allalaadimine
kokkuvõte
Sellest õpetusest saate teada, kuidas luua mudeleid CodeIgniter. Kasutasime ära objektorienteeritud programmeerimise pärandi, et edendada koodi korduvkasutatavust, luues baasmudeli, mis rakendab nelja peamist andmebaasi toimingut: sisestamine, lugemine, värskendamine ja kustutamine.
Oleme kontseptsioone praktilise rakenduse abil demonstreerinud ja jätkame seda järgmistes õpetustes, lisades rakendusele rohkem funktsioone.