Data jsou rodovou linií většiny aplikací. Údaje je třeba ukládat takovým způsobem, aby je bylo možné dále analyzovat, aby poskytly informace a usnadnily obchodní rozhodnutí. Data jsou obvykle uložena v databázi. Mezi hlavní obavy při interakci s databází patří zabezpečení, snadný přístup a implementace strukturovaných dotazovacích jazyků (SQL) specifických pro dodavatele databáze.
Aktivní záznam je návrhový vzor, který usnadňuje snadnou, bezpečnou a výmluvnou interakci s databází.
Aktivní záznam má následující výhody
- Vkládejte, aktualizujte a mazejte záznamy pomocí jednoduchých řetězců metod aktivního záznamu
- Odešle vstup uživatele bezpečným způsobem pomocí parametrů
- Umožňuje vám pracovat s více databázovými stroji, jako je MySQL, SQL Server atd., Aniž byste museli přepisovat kód aplikace
- CodeIgniter používá ovladače specifické pro každý databázový stroj na pozadí.
V tomto výukovém programu se naučíte:
- Jak používat aktivní záznam: Příklad
- Konfigurace databáze CodeIgniter
- CodeIgniter Vložit aktivní záznam
- CodeIgniter Vyberte Aktivní záznam
- Aktualizace aktivního záznamu CodeIgniter
- CodeIgniter Odstranit aktivní záznam
Jak používat aktivní záznam: Příklad
V tomto výukovém programu probereme databázi výukového programu. Budeme mít dva stoly, jeden s objednávkami, druhý s podrobnostmi.
Tento kurz předpokládá, že máte nainstalovanou a spuštěnou databázi MySQL.
Spuštěním následujících skriptů vytvořte databázi výukového programu:
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;
Výše uvedený kód vytvoří databázi s názvem ci_active_record a vytvoří dvě tabulky, a to objednávky a order_details. Vztah mezi těmito dvěma tabulkami je definován ID sloupce v objednávkách a order_id v tabulce order_details.
Konfigurace databáze CodeIgniter
Nyní nakonfigurujeme naši aplikaci, aby mohla komunikovat s touto databází.
Otevřete konfigurační soubor databáze umístěný v application / config / database.php
vyhledejte následující řádky v konfiguračním souboru
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Aktualizujte výše uvedený kód na následující
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Poznámka: uživatelské jméno a heslo budete muset nahradit těmi, které odpovídají vaší konfiguraci MySQL.
Kromě podrobností o konfiguraci databáze musíme také říct CodeIgniter, aby při načtení načetl knihovnu databáze
Krok 1) Otevřete následující soubor application / config / autoload.php
Krok 2) Vyhledejte klíčové knihovny pole $ autoload a načtěte knihovnu databáze, jak je znázorněno níže
$autoload['libraries'] = array('database');
TADY,
- Výše uvedený kód načte knihovnu databáze při spuštění aplikace
CodeIgniter Vložit aktivní záznam
Pro účely testování vytvoříme řadič a definované cesty, které budeme používat k interakci s naší aplikací prostřednictvím aktivního záznamu.
Vytvořte novou souborovou aplikaci / řadiče / ActiveRecordController.php
Přidejte následující kód do ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
TADY,
- $ data = […] definuje data proměnné pole, která jako názvy polí používá názvy databázové tabulky a přiřazuje jim hodnoty
- $ this-> db-> insert ('commands', $ data); zavolá metodu vložení databázové knihovny, předá jako parametr pořadí názvů tabulek a proměnnou pole $ data. Tento řádek generuje příkaz SQL INSERT pomocí klíčů pole jako názvů polí a hodnot pole jako hodnot, které mají být vloženy do databáze.
Nyní, když jsme úspěšně vytvořili metodu kontroleru pro aktivní záznam, nyní budeme muset vytvořit trasu, kterou zavoláme k provedení metody kontroleru.
Nyní otevřete route.php v application / config / routes.php
přidejte k trasám následující řádek
$route['ar/insert'] = 'activerecordcontroller/store_order';
TADY,
- Definujeme trasu ar / insert, která volá store_order z ActiveRecordController.
Nyní spustíme webový server a otestujeme naši metodu.
Spuštěním následujícího příkazu spustíte integrovaný server pro PHP
cd C:\Sites\ci-appphp -S localhost:3000
TADY,
- Výše uvedený prohlížeč příkazů do příkazového řádku a spuštění integrovaného serveru na portu 3000.
Vložte následující adresu URL do svého prohlížeče
http: // localhost: 3000 / ar / insert
Získáte následující výsledky
order has successfully been created
Otevřete databázi výukových programů MySQL a zkontrolujte tabulku objednávek
Budete moci nově vytvořený řádek, jak je znázorněno na obrázku níže
CodeIgniter Vyberte Aktivní záznam
V této části uvidíme, jak číst záznamy, které máme v databázi, a zobrazit je ve webovém prohlížeči jako neuspořádaný seznam
Přidejte následující metodu do ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
TADY,
- $ query = $ this-> db-> get ('commands'); spustí výběrový dotaz proti tabulce objednávek a vybere všechna pole
- echo "
Výpis objednávek
"; zobrazí záhlaví HTML o velikosti 3 - echo "
- "; vypíše úvodní značku pro neobjednaný seznam HTML
- foreach ($ query-> result () as $ row) {…} použil smyčku for k procházení výsledků vrácených z databáze. echo "
- $ row-> customer_name "; vytiskne jméno_zákazníka z databáze
Před načtením následující adresy URL můžete do databáze načíst několik dalších záznamů.
Pojďme nyní definovat trasu pro dotaz SELECT
Otevřete tabulku application / config / routes.php
Přidejte následující trasu
$route['ar'] = 'activerecordcontroller';
TADY,
- Trasa ar ukazuje na metodu indexu třídy ActiveRecordController. To je ve výchozím nastavení, proto jsme nezadali metodu indexu, jako jste to udělali pro trasu, která vkládá záznamy
Za předpokladu, že je webový server již spuštěn, načtěte následující adresu URL
http: // localhost: 3000 / ar
Měli byste vidět výsledky, které jsou ve vašem webovém prohlížeči velmi podobné následujícím
Aktualizace aktivního záznamu CodeIgniter
V této části budeme hovořit o tom, jak použít aktivní záznam k aktualizaci databáze. Řekněme, že chceme aktualizovat jméno zákazníka Joe Thomas na Joe.
Přidejte následující metodu do třídy 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';}
TADY,
- $ data = […] definuje pole a hodnoty, které chceme aktualizovat v databázové tabulce
- $ this-> db-> where ('id', 1); nastavuje klauzuli where aktualizačního dotazu
- $ this-> db-> update ('commands', $ data); vygeneruje dotaz na aktualizaci SQL a provede jej proti naší databázi.
Výše uvedený kód vytvoří následující příkaz SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Pojďme nyní aktualizovat aplikaci route.php / config / routes.php
Přidejte následující trasu
$route['ar/update'] = 'activerecordcontroller/update_order';
Uložte změny
Vložte následující adresu URL do webového prohlížeče
Pojďme nyní zobrazit záznamy databáze a uvidíme, jestli byly změny ovlivněny.
Jak můžete vidět na výše uvedeném obrázku, první záznam byl aktualizován z Joe Thomase na Joe.
CodeIgniter Odstranit aktivní záznam
Nyní odstraníme záznam z databáze. Záznam s ID 3 odstraníme.
Přidejte následující metodu do ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
TADY,
- $ this-> db-> where ('id', 1); nastavuje klauzuli where
- $ this-> db-> delete ('commands'); odstraní řádek databáze v tabulce objednávek na základě kritérií stanovených pomocí klauzule where.
Chcete-li provést výše uvedený kód, načtěte následující adresu URL do našeho webového prohlížeče
http: // localhost: 3000 / ar / mazat
souhrn
V tomto kurzu jste se naučili, jak pracovat s aktivním záznamem pro vkládání, aktualizaci, mazání a výběr záznamů z databáze. Při vytváření záznamů, aktualizaci a mazání jsme pracovali se statickými hodnotami. V dalším kurzu vytvoříme uživatelské rozhraní, které může uživatel použít k dynamickému vytváření záznamů v databázi.