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 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
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
Kuvame nüüd andmebaasikirjed ja vaatame, kas muudatused on mõjutatud.
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.