Aktivní záznam Codeigniter: Vložit, Vybrat, Aktualizovat, Odstranit

Obsah:

Anonim

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.