CodeIgniter adatbázis: Konfiguráció, Szerkesztés, Frissítés, Törlés adatok

Codegyújtó adatbázis

Az előző oktatóanyagban áttekintettük az alapokat, CodeAz Igniter aktív rekordja és a rekordok beszúrása, frissítése, törlése és olvasása az adatbázisból. Ebben az oktatóanyagban adatbázismodelleket hozunk létre, és űrlapokat használunk adatbázisrekordok létrehozásához és frissítéséhez. Ha teljesen új vagy az adatbázisokkal való munkában, CodeGyújtó, akkor azt tanácsoltad, hogy olvasd el az előző oktatóanyagot

Codegyújtó adatbázis konfiguráció

Kezdjük az oktatói projekt adatbázis létrehozásával. Létrehozunk egy egyszerű adatbázist az elérhetőségek kezelésére. Létrehozunk egy egyszerű adatbázist két (2) táblával, amelyekben megnevezik a haverokat és a városokat, ahol élnek. A haverok és a városok közötti kapcsolat egy az egyhez, a városokban az id az elsődleges kulcs, a city_id pedig az idegen kulcs a baráti táblákban. .

Az adatbázis létrehozásához futtassa a következő szkripteket:

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

Most hozzuk létre a városok táblázatát

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

CodeGyújtó adatbázis modellek

Most modelleket készítünk adatbázisunkhoz. A Modell az M része MVC. A modell adathozzáféréssel, adatmanipulációval és üzleti logikával foglalkozik.

In CodeIgniter, minden modellnek meg kell határoznia a támogatott metódusokat. Ahelyett, hogy minden modellben ugyanazt a kódot ismételnénk, kihasználjuk az objektumorientált programozás öröklődését, és létrehozunk egy szülő modellosztályt, amely meghatározza azokat az alapvető metódusokat, amelyeket a modelljeinknek támogatniuk kell.

Az alábbi táblázat bemutatja az általunk definiált módszereket és az adatok elérésének módját.

S / N Módszer Leírás
1 __konstruálni Meghatározza a konstruktor metódust, amely meghívja a szülő konstruktor metódust
2 get_all Feltétel nélkül lekéri az adatbázisból az összes mezőt és rekordot
3 get_by_id Egyetlen sort kér le az adatbázisból az INT típusú id nevű elsődleges kulcs használatával
4 get_where Az összes mezőt lekéri az adatbázisból a kritériumok alapján
5 helyezze Új rekordot szúr be az adatbázisba
6 frissítés Frissít egy meglévő adatbázisrekordot az INT típusú, id nevű elsődleges kulcs alapján
7 töröl Töröl egy meglévő rekordot az adatbázisból az INT típusú id nevű elsődleges kulcs alapján

A következő kép az osztálydiagramot mutatja, és azt, hogy a Pals és Cities gyermekmodellek hogyan kapcsolódnak a BaseModel szülőmodellhez.

CodeGyújtó adatbázis modellek

Két modellt készítünk a fenti képen leírtak szerint

Hozzon létre egy új BaseModel osztályt az application/models/BaseModel.php fájlban

Adja hozzá a következő kódot

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

ITT,

  • védett $tábla = ”; táblázat nevű védett változót határoz meg. Ezt a megfelelő gyermekosztály tölti fel, hogy meghatározza, hogy az alapmodell osztálymetódusaink melyik táblával működjenek együtt.
  • nyilvános függvény __construct() {…} határozza meg a konstruktor metódust, és végrehajtja a CI_Model szülőosztály konstruktor metódusát.
  • get_all() {…} az adatbázis-könyvtárat és a $table változó értékét használja a SELECT lekérdezés futtatásához az adatbázisunkban.
  • get_by_id($id) {…} meghatározza a módszert egyetlen sor lekéréséhez az adatbázisból, és elfogad egy $id paramétert, amelynek INT adattípusúnak kell lennie.
  • get_where($hol) {…} definiálja a get metódust, amely lehetővé teszi a where záradék beállítását.
  • Az insert($data) {…} meghatározza az insert metódust, és elfogadja az adatbázisba írandó értékeket tartalmazó $data tömbparamétert.
  • update($id, $data) {…} meghatározza a frissítési metódust, és elfogadja a $data tömbparamétert, amely tartalmazza a frissítendő értékeket az adatbázisban.
  • delete($id) {…} meghatározza a törlési metódust, amely elfogadja a $id paraméterét, amelynek INT adattípusúnak kell lennie.

Most, hogy elkészültünk a szülőmodell osztályával, hozzuk létre a Pals modelljeinket

Hozzon létre egy új fájlt az application/models/Pals.php fájlban

Adja hozzá a következő kódot

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

ITT,

  • class Pals kiterjeszti a BaseModel-t {…} kiterjeszti a BaseModel szülőmodellt, és automatikusan eléri a BaseModel-ben meghatározott összes metódust a gyermekosztályhoz.
  • védett $tábla = 'barátok'; a szülőmodellünkhöz társított táblanevet határozza meg
  • A __construct() {…} inicializálja a szülő konstruktort
  • public függvény get_by_id($id) {…} felülírja a get_by_id paramétert, hogy egyedi megvalósítást biztosítson a Pals modellre specifikusan. A get_by_id lekérdezése egy összekapcsolást használ a városnév lekéréséhez a városok táblázatából
  • nyilvános függvény get_all() {…} felülírja a get_all metódust a haverok és a városok tábla közötti összekapcsolási lekérdezés megvalósításához

Hozzon létre egy új fájlt az application/models/Cities.php fájlban

<?php
class Cities extends BaseModel {
    protected $table = 'cities';
    
    public function __construct() {
        parent::__construct();
    }
}

ITT,

védett $tábla = 'városok'; meghatározza a modell adatbázis táblát.

Amint a fenti kódból látható, az öröklődés sok időt takarít meg nekünk, amikor modellekkel dolgozunk CodeGyújtó. A következő részben megtudjuk,

Contacts Manager Controllers

Most, hogy elkészítettük a modelleket, hozzuk létre a vezérlőket az alkalmazásunkhoz. Két vezérlőnk lesz, nevezetesen a Kapcsolatok és a Városok

Kezdjük a városokkal

Hozzon létre egy új Cities.php fájlt az Application/controllers könyvtárban

Adja hozzá a következő kódot

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

ITT,

A fenti kód megvalósítja az összes olyan metódust, amely szükséges a sorok adatbázisból történő létrehozásához, frissítéséhez, törléséhez és olvasásához.

Hozzon létre egy másik Contacts.php fájlt az Application/controllerben

Adja hozzá a következő kódot

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

Névjegykezelő nézetek

Már áttekintettük az űrlapokat és az érvényesítést a CodeIgniter az előző oktatóanyagokban. Az előző oktatóanyagokban fejlesztett kódot fogjuk használni. A teljesség kedvéért reprodukáljuk az előző oktatóanyagokban létrehozott kódot.

Pályázatunk álláspontja a következő lesz

Névjegykezelő nézetek

A fenti nézetek kódját az alábbi linkre kattintva töltheti le

CodeIgniter Contacts Manager Views letöltés

Összegzésként

Ebből az oktatóanyagból megtudhatja, hogyan hozhat létre modelleket CodeGyújtó. Az objektum-orientált programozásban az öröklődés előnyeit kihasználtuk a kód újrafelhasználhatóságának elősegítésére egy olyan alapmodell létrehozásával, amely megvalósítja a négy fő adatbázis-műveletet: beillesztést, olvasást, frissítést és törlést.

A koncepciókat egy gyakorlati alkalmazás segítségével mutattuk be, és ezt folytatjuk a következő oktatóanyagokban, és további funkciókkal bővítjük az alkalmazást.

Foglald össze ezt a bejegyzést a következőképpen: