Codeigniter Active Record: Lisää, Valitse, Päivitä, Poista

Data on useimpien sovellusten verilinja. Tiedot on säilytettävä siten, että niitä voidaan analysoida edelleen oivallusten ja liiketoimintapäätösten helpottamiseksi. Tiedot tallennetaan yleensä tietokantaan. Tärkeimpiä huolenaiheita tietokannan kanssa käytettäessä ovat turvallisuus, helppokäyttöisyys ja tietokantatoimittajakohtaiset Structured Query Language (SQL) -toteutukset.

Aktiivinen tietue on suunnittelumalli, jonka avulla on helppo olla vuorovaikutuksessa tietokannan kanssa helposti, turvallisesti ja kaunopuheisesti.

Aktiivisella tietueella on seuraavat edut

  • Lisää, päivitä ja poista tietueita yksinkertaisilla aktiivisten tietueiden menetelmäketjuilla
  • Lähettää käyttäjän syötteen suojatulla tavalla parametrien avulla
  • Voit työskennellä useiden tietokantaohjelmien kanssa, kuten MySQL, SQL Server jne. kirjoittamatta sovelluskoodia uudelleen
  • CodeIgniter käyttää taustalla kullekin tietokantakoneelle erityisiä ohjaimia.

Aktiivisen tietueen käyttäminen: Esimerkki

Tässä opetusohjelmassa käsittelemme opetusohjelmatietokantaa. Meillä on kaksi pöytää, joista toisessa on tilaukset ja toisessa yksityiskohdat.

Tämä opetusohjelma olettaa, että sinulla on MySQL tietokanta asennettuna ja käynnissä.

Luo opetusohjelmatietokanta suorittamalla seuraavat komentosarjat:

CREATE SCHEMA ci_active_record;

USE ci_active_record;

CREATE TABLE `order_details` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `item` varchar(245) DEFAULT NULL,
  `quantity` int(11) DEFAULT '0',
  `price` decimal(10,2) DEFAULT '0.00',
  `sub_total` decimal(10,2) DEFAULT '0.00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` timestamp NULL DEFAULT NULL,
  `customer_name` varchar(245) DEFAULT NULL,
  `customer_address` varchar(245) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

Yllä oleva koodi luo tietokannan nimeltä ci_active_record ja luo kaksi taulukkoa, nimittäin tilaukset ja order_details. Kahden taulukon välinen suhde määritellään sarakkeen id:llä tilauksissa ja order_id:llä order_details -taulukossa.

CodeIgniter-tietokannan määritys

Määritämme nyt sovelluksemme kommunikoimaan tämän tietokannan kanssa.

Avaa tietokannan määritystiedosto, joka sijaitsee osoitteessa application/config/database.php

etsi seuraavat rivit asetustiedostosta

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

Päivitä yllä oleva koodi seuraavaksi

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

Huomautus: sinun on vaihdettava käyttäjätunnus ja salasana niille, jotka vastaavat määrityksiäsi MySQL.

Tietokannan määritystietojen lisäksi meidän on myös kerrottava CodeIgniterille, että se lataa tietokantakirjaston, kun se latautuu

Vaihe 1) Avaa seuraava tiedosto application/config/autoload.php

Vaihe 2) Etsi $autoload array -avainkirjastot ja lataa tietokantakirjasto alla olevan kuvan mukaisesti

$autoload['libraries'] = array('database');

TÄSSÄ,

  • Yllä oleva koodi lataa tietokantakirjaston, kun sovellus käynnistyy

CodeIgniter Lisää aktiivinen tietue

Testaustarkoituksia varten luomme ohjaimen ja määritellyt reitit, joita käytämme vuorovaikutuksessa sovelluksemme kanssa aktiivisen tietueen kautta.

Luo uusi tiedosto application/controllers/ActiveRecordController.php

Lisää seuraava koodi tiedostoon ActiveRecordController.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ActiveRecordController extends CI_Controller {
    public function store_order(){
        $data = [
            'date' => '2018-12-19',
            'customer_name' => 'Joe Thomas',
            'customer_address' => 'US'
        ];

        
        $this->db->insert('orders', $data); 

        echo 'order has successfully been created';
    }
}

TÄSSÄ,

  • $data = […] määrittää taulukon muuttujan tiedot, joka käyttää tietokantataulukoiden nimiä taulukkoavaimina ja antaa niille arvoja
  • $this->db->insert('tilaukset', $data); kutsuu tietokantakirjaston insert-menetelmän, välittää taulukon nimijärjestykset ja taulukkomuuttujan $data parametriksi. Tämä rivi luo SQL INSERT -käskyn käyttämällä taulukon avaimia kenttien niminä ja taulukon arvoja tietokantaan lisättävinä arvoina.

Nyt kun olemme onnistuneesti luoneet ohjainmenetelmän aktiiviselle tietueelle, meidän on nyt luotava reitti, jota kutsumme suorittaaksemme ohjainmenetelmän.

Avaa nyt routes.php hakemistosta application/config/routes.php

lisää seuraava rivi reitteihin

$route['ar/insert'] = 'activerecordcontroller/store_order';

TÄSSÄ,

  • Määrittelemme reitin ar/insert, joka kutsuu ActiveRecordControllerin store_orderin.

Aloitetaan nyt verkkopalvelin testataksemme menetelmäämme.

Käynnistä PHP:n sisäänrakennettu palvelin suorittamalla seuraava komento

cd C:\Sites\ci-app
php -S localhost:3000

TÄSSÄ,

  • Yllä oleva komentoselain komentoriville ja käynnistä sisäänrakennettu palvelin portista 3000.

Lataa seuraava URL-osoite selaimeesi

http://localhost:3000/ar/insert

Saat seuraavat tulokset

order has successfully been created

Avaa MySQL opetusohjelmatietokanta ja tarkista tilaustaulukko

Voit luoda uuden rivin alla olevan kuvan mukaisesti

CodeIgniter Lisää aktiivinen tietue

CodeIgniter Valitse Active Record

Tässä osiossa näemme kuinka lukea tietokannassamme olevat tietueet ja näyttää ne verkkoselaimessa järjestämättömänä luettelona

Lisää seuraava menetelmä ActiveRecordControlleriin

public function index() {
        $query = $this->db->get('orders');
        
        echo "<h3>Orders Listing</h3>";
        echo "<ul>";
        
        foreach ($query->result() as $row) {
            echo "<li>$row->customer_name</li>";
        }
        
        echo "</ul>";
    }

TÄSSÄ,

  • $kysely = $this->db->get('tilaukset'); suorittaa valintakyselyn tilaustaulukkoa vastaan ​​ja valitsee kaikki kentät
  • kaiku" Tilausten listaus ”; näyttää HTML-otsikon, jonka koko on 4
  • kaiku" ”; tulostaa järjestämättömän HTML-luettelon avaustunnisteen
  • foreach ($query->result() $rivinä) {…} käytti for-silmukkaa tietokannasta palautettujen tulosten läpikäymiseen. kaiku" $rivi->asiakkaan_nimi ”; tulostaa asiakkaan_nimen tietokannasta

Ennen kuin lataat seuraavan URL-osoitteen, voit ladata vielä muutama tietue tietokantaan.

Määritetään nyt reitti SELECT-kyselylle

Avaa application/config/routes.php-taulukko

Lisää seuraava reitti

$route['ar'] = 'activerecordcontroller';

TÄSSÄ,

  • Reitti ar osoittaa ActiveRecordController-luokan indeksimenetelmään. Tästä syystä emme ole määrittäneet indeksimenetelmää kuten teit tietueita lisäävälle reitille

Olettaen, että verkkopalvelin on jo käynnissä, lataa seuraava URL-osoite

http://localhost:3000/ar

Sinun pitäisi pystyä näkemään tuloksia, jotka ovat hyvin samankaltaisia ​​kuin seuraavat selaimessasi

CodeIgniter Valitse Active Record

CodeIgniter Päivitä aktiivinen tietue

Tässä osiossa puhumme aktiivisen tietueen käyttämisestä tietokannan päivittämiseen. Oletetaan, että haluamme päivittää asiakkaan nimen Joe Thomas nimeksi Joe.

Lisää seuraava menetelmä ActiveRecordController-luokkaan

public function update_order() {
        $data = [
            'customer_name' => 'Joe',
        ];
        $this->db->where('id', 1);
        $this->db->update('orders', $data);
        echo 'order has successfully been updated';
    }

TÄSSÄ,

  • $data = […] määrittää kentät ja arvot, jotka haluamme päivittää tietokantataulukossa
  • $this->db->where('id', 1); asettaa päivityskyselyn where-lauseen
  • $this->db->update('tilaukset', $data); luo SQL-päivityskyselyn ja suorittaa sen tietokantaamme vastaan.

Yllä oleva koodi tuottaa seuraavan SQL-käskyn

UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

Päivitetään nyt tiedosto routes.php application/config/routes.php

Lisää seuraava reitti

$route['ar/update'] = 'activerecordcontroller/update_order';

Tallenna muutokset

Lataa seuraava URL-osoite verkkoselaimeen

CodeIgniter Päivitä aktiivinen tietue

Näytetään nyt tietokannan tietueet ja katsotaan, ovatko muutokset vaikuttaneet.

CodeIgniter Päivitä aktiivinen tietue

Kuten yllä annetusta kuvasta näkyy, ensimmäinen ennätys on päivitetty Joe Thomasista Joelle.

CodeIgniter Poista aktiivinen tietue

Poistamme nyt tietueen tietokannasta. Poistamme tietueen tunnuksella 3.

Lisää seuraava menetelmä ActiveRecordControlleriin

public function delete_order() {
        $this->db->where('id', 3);
        $this->db->delete('orders');

        echo 'order has successfully been deleted';
    }

TÄSSÄ,

  • $this->db->where('id', 1); asettaa missä-lauseen
  • $this->db->delete('tilaukset'); poistaa tietokannan rivin tilaustaulukosta where-lauseella asetettujen ehtojen perusteella.

Suorita yllä oleva koodi lataamalla seuraava URL-osoite verkkoselaimeemme

http://localhost:3000/ar/delete

Yhteenveto

Tässä opetusohjelmassa olet oppinut työskentelemään aktiivisen tietueen kanssa tietueiden lisäämiseksi, päivittämiseksi, poistamiseksi ja valitsemiseksi tietokannasta. Työskentelimme staattisten arvojen kanssa tietueiden luomiseksi, päivittämiseksi ja poistamiseksi. Seuraavassa opetusohjelmassa luomme käyttöliittymän, jonka avulla käyttäjä voi luoda tietueita dynaamisesti tietokantaan.