CodeSüütaja andmebaas: andmete konfigureerimine, muutmine, värskendamine, kustutamine
Codesüütaja andmebaas
Eelmises õpetuses käsitlesime põhitõdesid CodeIgniteri aktiivne kirje ja kuidas andmebaasist kirjeid sisestada, värskendada, kustutada ja lugeda. Selles õpetuses loome andmebaasimudeleid ja kasutame vorme andmebaasikirjete loomiseks ja värskendamiseks. Kui olete andmebaasidega töötamises täiesti uus... CodeSüütaja, siis soovitasid sa eelmist õpetust lugeda
CodeSüütaja 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`) ) ;
CodeSüütaja andmebaasi mudelid
Nüüd loome oma andmebaasi mudelid. Mudel on M-osa MVC. Mudel käsitleb andmetele juurdepääsu, andmetega manipuleerimist ja äriloogikat.
In CodeIgniteri puhul peab iga mudel defineerima meetodid, mida see toetab. Selle asemel, et korrata sama koodi igas mudelis, kasutame ära objektorienteeritud programmeerimise pärimist ja loome ülemmudeli klassi, mis defineerib 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ärimine meile mudelitega töötamisel palju aega CodeSüütaja. 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
Vorme ja valideerimist vaatlesime juba jaotises CodeIgniter eelmistes õpetustes. Kasutame eelmistes õpetustes loodud koodi. Täielikkuse huvides kordame eelmistes õpetustes loodud koodi.
Meie taotluse seisukohad on järgmised
Ülaltoodud vaadete koodi saate alla laadida, klõpsates alloleval lingil
CodeIgniteri kontaktide halduri vaadete allalaadimine
kokkuvõte
Sellest õpetusest saate teada, kuidas luua mudeleid Codeelektrisütik. 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.


