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.

CodeSüütaja andmebaasi mudelid

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

Kontaktide halduri vaated

Ü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.

Võta see postitus kokku järgmiselt: