Codeigniteri aktiivne kirje: sisestamine, valimine, värskendamine, kustutamine

Andmed on enamiku rakenduste vereliin. Andmeid tuleb salvestada nii, et neid saaks edasi analüüsida, et anda ülevaadet ja hõlbustada äriotsuste langetamist. Andmed salvestatakse tavaliselt andmebaasi. Andmebaasiga suhtlemisel on üks peamisi probleeme turvalisus, juurdepääsetavuse lihtsus ja SQL-i (Structured Query Language) konkreetsed andmebaasimüüjate rakendused.

Aktiivne kirje on kujundusmuster, mis muudab andmebaasiga hõlpsa, turvalise ja kõneka suhtlemise lihtsaks.

Aktiivsel kirjel on järgmised eelised

  • Sisestage, värskendage ja kustutage kirjeid aktiivsete kirjete lihtsate meetodite ahelatega
  • Edastab kasutaja sisendi turvalisel viisil, kasutades parameetreid
  • Võimaldab töötada mitme andmebaasimootoriga, näiteks MySQL, SQL Server jne ilma rakenduse koodi ümber kirjutamata
  • CodeIgniter kasutab taustal iga andmebaasimootori jaoks spetsiifilisi draivereid.

Kuidas kasutada aktiivset kirjet: näide

Selles õpetuses käsitleme õpetuste andmebaasi. Meil on kaks lauda, ​​üks tellimuste ja teine ​​detailidega.

See õpetus eeldab, et teil on MySQL andmebaas on installitud ja töötab.

Õpetuste andmebaasi loomiseks käivitage järgmised skriptid:

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;

Ülaltoodud kood loob andmebaasi nimega ci_active_record ja loob kaks tabelit, nimelt orderid ja order_details. Kahe tabeli vahelise seose määrab tellimuste veeru ID ja order_details tabelis order_id.

CodeIgniteri andmebaasi konfiguratsioon

Nüüd konfigureerime oma rakenduse nii, et see saaks selle andmebaasiga suhelda.

Avage andmebaasi konfiguratsioonifail, mis asub aadressil application/config/database.php

leidke konfiguratsioonifailist järgmised read

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

Värskendage ülaltoodud kood järgmiseks

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

Märge: peate asendama kasutajanime ja parooli nendega, mis vastavad teie konfiguratsioonile MySQL.

Lisaks andmebaasi konfiguratsiooni üksikasjadele peame ka CodeIgniterile käskima andmebaasi teegi laadimisel laadimisel laadida

Step 1) Avage järgmine fail application/config/autoload.php

Step 2) Leidke $autoload massiivi võtmeteegid ja laadige andmebaasi teek, nagu allpool näidatud

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

SIIN,

  • Ülaltoodud kood laadib rakenduse käivitumisel andmebaasi teegi

CodeIgniter Sisestage aktiivne kirje

Testimise eesmärgil loome kontrolleri ja määratletud marsruudid, mida kasutame oma rakendusega aktiivse kirje kaudu suhtlemiseks.

Looge uus fail application/controllers/ActiveRecordController.php

Lisage faili ActiveRecordController.php järgmine kood

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

SIIN,

  • $data = […] määrab massiivi muutuja andmed, mis kasutab andmebaasi tabelinimesid massiivivõtmetena ja määrab neile väärtused
  • $this->db->insert('tellimused', $andmed); kutsub välja andmebaasi teegi insert-meetodi, edastab parameetrina tabelinimede järjestused ja massiivi muutuja $data. See rida genereerib SQL INSERT-lause, kasutades väljanimedena massiivivõtmeid ja andmebaasi sisestatavate väärtustena massiivi väärtusi.

Nüüd, kui oleme edukalt loonud aktiivse kirje kontrolleri meetodi, peame nüüd looma marsruudi, mida kutsume kontrolleri meetodi käivitamiseks.

Nüüd avage failis application/config/routes.php routes.php

lisage marsruutidele järgmine rida

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

SIIN,

  • Määratleme marsruudi ar/insert, mis kutsub ActiveRecordControlleri store_orderi.

Käivitame nüüd veebiserveri, et oma meetodit testida.

PHP sisseehitatud serveri käivitamiseks käivitage järgmine käsk

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

SIIN,

  • Ülaltoodud käsubrauser käsureale ja käivitage sisseehitatud server pordist 3000.

Laadige oma brauserisse järgmine URL

http://localhost:3000/ar/insert

Saate järgmised tulemused

order has successfully been created

avage MySQL õpetuste andmebaas ja kontrollige tellimuste tabelit

Saate luua äsja loodud rea, nagu on näidatud alloleval pildil

CodeIgniter Sisestage aktiivne kirje

CodeIgniter Valige Aktiivne kirje

Selles jaotises näeme, kuidas lugeda andmebaasis olevaid kirjeid ja kuvada neid veebibrauseris järjestamata loendina

Lisage ActiveRecordControllerile järgmine meetod

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>";
    }

SIIN,

  • $päring = $this->db->get('tellimused'); käivitab valikupäringu tellimuste tabeli vastu, valides kõik väljad
  • kaja" Tellimuste nimekiri ”; kuvab HTML-i pealkirja suurusega 4
  • kaja" ”; prindib järjestamata HTML-loendi avamärgendi
  • foreach ($query->result() kui $row) {…} kasutas andmebaasist tagastatud tulemuste läbimiseks silmust for. kaja" $rida->kliendi_nimi ”; prindib andmebaasist kliendi_nime

Enne järgmise URL-i laadimist saate laadida andmebaasi veel paar kirjet.

Määratleme nüüd päringu SELECT jaoks marsruudi

Avage tabel application/config/routes.php

Lisage järgmine marsruut

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

SIIN,

  • Marsruut ar osutab ActiveRecordController klassi indeksmeetodile. See on vaikimisi põhjus, miks me ei määranud indeksi meetodit, nagu te tegite kirjeid lisava marsruudi jaoks

Eeldades, et veebiserver juba töötab, laadige järgmine URL

http://localhost:3000/ar

Peaksite nägema tulemusi, mis on teie veebibrauseris väga sarnased järgmistega

CodeIgniter Valige Aktiivne kirje

CodeIgniteri aktiivse kirje värskendamine

Selles jaotises räägime sellest, kuidas kasutada aktiivset kirjet andmebaasi värskendamiseks. Oletame, et tahame muuta kliendinime Joe Thomas nimeks Joe.

Lisage ActiveRecordControlleri klassi järgmine meetod

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

SIIN,

  • $data = […] määrab väljad ja väärtused, mida soovime andmebaasi tabelis värskendada
  • $this->db->where('id', 1); määrab värskenduspäringu kus-klausli
  • $this->db->update('tellimused', $andmed); genereerib SQL-i värskenduspäringu ja käivitab selle meie andmebaasis.

Ülaltoodud kood loob järgmise SQL-lause

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

Uuendame nüüd faili routes.php application/config/routes.php

Lisage järgmine marsruut

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

Salvestage muudatused

Laadige veebibrauserisse järgmine URL

CodeIgniteri aktiivse kirje värskendamine

Kuvame nüüd andmebaasikirjed ja vaatame, kas muudatused on mõjutatud.

CodeIgniteri aktiivse kirje värskendamine

Nagu näete ülaltoodud pildilt, on esimene rekord Joe Thomaselt Joe'ks uuendatud.

CodeIgniter Kustutage aktiivne kirje

Nüüd kustutame kirje andmebaasist. Kustutame kirje ID-ga 3.

Lisage ActiveRecordControllerile järgmine meetod

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

        echo 'order has successfully been deleted';
    }

SIIN,

  • $this->db->where('id', 1); määrab klausli kus
  • $this->db->delete('tellimused'); kustutab andmebaasi rea tellimuste tabelist, lähtudes klausli where abil seatud kriteeriumidest.

Ülaltoodud koodi käivitamiseks laadige meie veebibrauserisse järgmine URL

http://localhost:3000/ar/delete

kokkuvõte

Selles õpetuses õppisite, kuidas töötada aktiivse kirjega, et sisestada, värskendada, kustutada ja valida andmebaasi kirjeid. Kirjete loomiseks, värskendamiseks ja kustutamiseks töötasime staatiliste väärtustega. Järgmises õpetuses loome kasutajaliidese, mille abil saab kasutaja dünaamiliselt andmebaasis kirjeid luua.