Dáta sú pokrvnou líniou väčšiny aplikácií. Údaje je potrebné uchovávať tak, aby ich bolo možné ďalej analyzovať, aby poskytli informácie a uľahčili obchodné rozhodnutia. Údaje sa zvyčajne ukladajú do databázy. Medzi hlavné obavy pri interakcii s databázou patrí bezpečnosť, ľahký prístup a implementácia štruktúrovaného dotazovacieho jazyka (SQL) špecifická pre dodávateľa databázy.
Aktívny záznam je návrhový vzor, ktorý umožňuje ľahkú, bezpečnú a výrečnú komunikáciu s databázou.
Aktívny záznam má nasledujúce výhody
- Vkladajte, aktualizujte a mazajte záznamy pomocou jednoduchých reťazcov metód aktívneho záznamu
- Odošle vstup užívateľa bezpečným spôsobom pomocou parametrov
- Umožňuje vám pracovať s viacerými databázovými strojmi, ako sú MySQL, SQL Server atď., Bez prepisovania kódu aplikácie
- CodeIgniter používa ovládače špecifické pre každý databázový stroj na pozadí.
V tomto návode sa dozviete:
- Ako používať aktívny záznam: Príklad
- Konfigurácia databázy CodeIgniter
- CodeIgniter Vložiť aktívny záznam
- CodeIgniter Vyberte Aktívny záznam
- Aktualizácia aktívneho záznamu CodeIgniter
- CodeIgniter Odstrániť aktívny záznam
Ako používať aktívny záznam: Príklad
V tomto výučbe sa budeme zaoberať databázou výučbových programov. Budeme mať dva stoly, jeden s objednávkami a druhý s podrobnosťami.
Tento výukový program predpokladá, že máte nainštalovanú a spustenú databázu MySQL.
Spustením nasledujúcich skriptov vytvorte databázu cvičení:
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;
Vyššie uvedený kód vytvára databázu s názvom ci_active_record a vytvára dve tabuľky, a to orders a order_details. Vzťah medzi týmito dvoma tabuľkami je definovaný stĺpcom id v objednávkach a order_id v tabuľke order_details.
Konfigurácia databázy CodeIgniter
Teraz nakonfigurujeme našu aplikáciu tak, aby bola schopná komunikovať s touto databázou.
Otvorte konfiguračný súbor databázy umiestnený v application / config / database.php
vyhľadajte nasledujúce riadky v konfiguračnom súbore
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Aktualizujte vyššie uvedený kód na nasledovný
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Poznámka: budete musieť nahradiť užívateľské meno a heslo tým, ktoré zodpovedajú vašej konfigurácii MySQL.
Okrem podrobností o konfigurácii databázy musíme tiež povedať CodeIgniter, aby pri načítaní načítal databázovú knižnicu
Krok 1) Otvorte nasledujúci súbor application / config / autoload.php
Krok 2) Vyhľadajte kľúčové knižnice poľa $ autoload a načítajte databázovú knižnicu, ako je uvedené nižšie
$autoload['libraries'] = array('database');
TU,
- Vyššie uvedený kód načíta databázovú knižnicu pri spustení aplikácie
CodeIgniter Vložiť aktívny záznam
Na účely testovania vytvoríme kontrolór a definované trasy, ktoré budeme používať na interakciu s našou aplikáciou prostredníctvom aktívneho záznamu.
Vytvorte novú aplikáciu súboru / radiče / ActiveRecordController.php
Pridajte nasledujúci kód do súboru ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
TU,
- $ data = […] definuje údaje premennej poľa, ktoré používajú názvy databázových tabuliek ako kľúče poľa a priraďuje im hodnoty
- $ this-> db-> insert ('commands', $ data); zavolá metódu vloženia databázovej knižnice, predá ako parameter poradie názvov tabuliek a premennú poľa $ data. Tento riadok generuje príkaz SQL INSERT pomocou klávesov poľa ako názvov polí a hodnôt poľa ako hodnôt, ktoré sa majú vložiť do databázy.
Teraz, keď sme úspešne vytvorili metódu radiča pre aktívny záznam, teraz budeme musieť vytvoriť trasu, ktorú zavoláme na vykonanie metódy radiča.
Teraz otvorte trasy.php v aplikácii / config / trasy.php
pridajte k trasám nasledujúci riadok
$route['ar/insert'] = 'activerecordcontroller/store_order';
TU,
- Definujeme trasu ar / insert, ktorá volá store_order z ActiveRecordController.
Teraz spustíme webový server, aby otestoval našu metódu.
Spustením nasledujúceho príkazu spustíte zabudovaný server pre PHP
cd C:\Sites\ci-appphp -S localhost:3000
TU,
- Vyššie uvedený prehľadávač príkazov do príkazového riadku a spustenie vstavaného servera na porte 3000.
Vložte nasledujúcu adresu URL do svojho prehliadača
http: // localhost: 3000 / ar / insert
Získate nasledujúce výsledky
order has successfully been created
Otvorte databázu tutoriálov MySQL a skontrolujte tabuľku objednávok
Budete môcť novo vytvorený riadok, ako je znázornené na obrázku nižšie
CodeIgniter Vyberte Aktívny záznam
V tejto časti uvidíme, ako načítať záznamy, ktoré máme v databáze, a zobraziť ich vo webovom prehliadači ako neusporiadaný zoznam.
Pridajte nasledujúcu metódu do ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
TU,
- $ query = $ this-> db-> get ('commands'); spustí výberový dopyt proti tabuľke objednávok a vyberie všetky polia
- echo "
Zoznam objednávok
"; zobrazí záhlavie HTML veľkosti 3 - echo "
- "; vypíše úvodnú značku pre neobjednaný zoznam HTML
- foreach ($ dotaz-> vysledok () ako $ riadok) {…} pouzil cyklus for na pretocenie vysledkov vratenych z databazy. echo "
- $ row-> customer_name "; vypíše meno zákazníka z databázy
Pred načítaním nasledujúcej adresy URL môžete do databázy načítať ešte niekoľko záznamov.
Poďme teraz definovať cestu pre dotaz SELECT
Otvorte tabuľku application / config / routes.php
Pridajte nasledujúcu trasu
$route['ar'] = 'activerecordcontroller';
TU,
- Route ar ukazuje na indexovú metódu triedy ActiveRecordController. To je predvolene to je dôvod, prečo sme neurčili metódu indexu, ako ste to urobili pre cestu, ktorá vkladá záznamy
Za predpokladu, že webový server je už spustený, načítajte nasledujúcu adresu URL
http: // localhost: 3000 / ar
Mali by ste byť schopní vidieť výsledky, ktoré sa vo vašom webovom prehliadači veľmi podobajú nasledujúcim
Aktualizácia aktívneho záznamu CodeIgniter
V tejto časti sa dozvieme, ako používať aktívny záznam na aktualizáciu databázy. Povedzme, že chceme aktualizovať meno zákazníka Joe Thomas na Joe.
Pridajte nasledujúcu metódu do triedy ActiveRecordController
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
TU,
- $ data = […] definuje polia a hodnoty, ktoré chceme aktualizovať v databázovej tabuľke
- $ this-> db-> where ('id', 1); nastavuje klauzulu where aktualizačného dotazu
- $ this-> db-> update ('objednávky', $ dáta); vygeneruje aktualizačný dotaz SQL a vykoná ho v našej databáze.
Vyššie uvedený kód vytvorí nasledujúci príkaz SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Poďme teraz aktualizovať aplikáciu route.php / config / routes.php
Pridajte nasledujúcu trasu
$route['ar/update'] = 'activerecordcontroller/update_order';
Uložte zmeny
Vložte nasledujúcu adresu URL do webového prehliadača
Poďme si teraz zobraziť databázové záznamy a zistiť, či boli zmeny ovplyvnené.
Ako môžete vidieť z vyššie uvedeného Obrázku, prvý záznam bol aktualizovaný z Joe Thomas na Joe.
CodeIgniter Odstrániť aktívny záznam
Teraz odstránime záznam z databázy. Vymažeme záznam s id 3.
Pridajte nasledujúcu metódu do ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
TU,
- $ this-> db-> where ('id', 1); nastavuje klauzulu kde
- $ this-> db-> delete ('commands'); vymaže riadok databázy v tabuľke objednávok na základe kritérií stanovených pomocou klauzuly where.
Vyššie uvedený kód vykonáte načítaním nasledujúcej adresy URL do nášho webového prehliadača
http: // localhost: 3000 / ar / mazať
Zhrnutie
V tomto tutoriáli ste sa naučili pracovať s aktívnym záznamom na vkladanie, aktualizáciu, mazanie a výber záznamov z databázy. Pracovali sme so statickými hodnotami, aby sme vytvorili záznamy, aktualizovali a vymazali. V ďalšom návode vytvoríme užívateľské rozhranie, ktoré môže užívateľ použiť na dynamické vytváranie záznamov v databáze.