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.