CodeIgniter Active Record: Lekérdezés beszúrása, frissítése, törlése
⚡ Okos összefoglaló
CodeAz Igniter Active Record egy tervezési minta, amely lehetővé teszi a modell számára az adatbázis egyszerű, biztonságos metódusláncokkal történő olvasását és írását. Támogatja a beszúrást, kiválasztást, frissítést és törlést különböző adatbázismotorok között a kód átírása nélkül, és paraméterezi a bemenetet az SQL injektálás megakadályozása érdekében.

Az adat a legtöbb alkalmazás vérvonala. Tárolni kell, hogy elemezhető legyen, betekintést nyújtson és megkönnyítse az üzleti döntéseket. Az adatokat általában egy adatbázisban tárolják. Az adatbázissal való interakció során a fő szempontok közé tartozik a biztonság, a könnyű hozzáférés és az adatbázis-gyártókra jellemző SQL (Structured Query Language) implementáció.
Az Active Record egy olyan tervezési minta, amely megkönnyíti az adatbázissal való interakciót, biztonságos és könnyen érthető módon. Az Active Record a következő előnyökkel rendelkezik:
- Rekordok beszúrása, frissítése és törlése egyszerű metódusláncokkal.
- Biztonságosan küldi el a felhasználói bemenetet paraméterek használatával.
- Lehetővé teszi, hogy több adatbázis-motorral dolgozzon, mint pl MySQL és az SQL Server az alkalmazáskód átírása nélkül.
- CodeAz Igniter az egyes adatbázismotorokhoz tartozó illesztőprogramokat használja a háttérben.
Az Active Record használata: Példa
Ebben az oktatóanyagban egy két táblával rendelkező minta adatbázist fogunk használni, az egyikben a megrendelések, a másikban a részletek vannak. Ez az oktatóanyag feltételezi, hogy van egy MySQL adatbázis telepítve és fut. Futtassa a következő szkripteket a bemutató adatbázis létrehozásához:
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;
A fenti kód létrehoz egy ci_active_record nevű adatbázist, valamint két táblát, az orders és az order_details táblát. A két tábla közötti kapcsolatot az orders táblában található oszlopazonosító és az order_details táblában található order_id határozza meg.
CodeGyújtó adatbázis konfiguráció
Most konfiguráljuk az alkalmazásunkat, hogy kommunikáljon ezzel az adatbázissal. Nyissuk meg az application/config/database.php mappában található adatbázis-konfigurációs fájlt, és keressük meg a következő sorokat:
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Frissítsd a fenti kódot a következőre:
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Jegyzet: a felhasználónevet és jelszót a sajátoddal megegyezőre kell cserélned. MySQL konfiguráció.
Az adatbázis-konfiguráció részletein kívül azt is meg kell mondanunk, hogy CodeIgniter az adatbáziskönyvtár betöltéséhez, amikor az betöltődik.
Step 1) Nyisd meg a következő fájlt: application/config/autoload.php.
Step 2) Keresse meg az $autoload tömbkulcs-könyvtárakat, és töltse be az adatbázis-könyvtárat az alábbiak szerint:
$autoload['libraries'] = array('database');
Itt:
- A fenti kód betölti az adatbáziskönyvtárat az alkalmazás indulásakor.
CodeGyújtó Aktív rekord beszúrása
Tesztelési célokból létrehozunk egy vezérlőt, és útvonalakat definiálunk az alkalmazásunkkal való interakcióhoz az Active Recordon keresztül. Hozz létre egy új fájlt: application/controllers/ActiveRecordController.php, és add hozzá a következő kódot:
<?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'; } }
Itt:
- A $data = […] egy olyan tömbváltozót definiál, amely az adatbázistábla oszlopneveit használja tömbkulcsként, és értékeket rendel hozzájuk.
- A $this->db->insert('orders', $data); meghívja az adatbáziskönyvtár INSERT metódusát, átadva az orders táblanevet és a $data tömbváltozót. Ez a sor létrehozza az SQL INSERT utasítást, amely a tömbkulcsokat használja mezőnevekként, a tömbértékeket pedig beszúrandó értékekként.
Most, hogy létrehoztuk a vezérlő metódust, létre kell hoznunk egy útvonalat, amelyet meghívunk a végrehajtásához. Nyissuk meg az application/config/routes.php fájlt, és adjuk hozzá a következő sort:
$route['ar/insert'] = 'activerecordcontroller/store_order';
Itt:
- Definiálunk egy ar/insert útvonalat, amely meghívja az ActiveRecordController store_order metódusát.
Most indítsuk el a webszervert a módszerünk teszteléséhez. Futtassuk a következő parancsot a beépített PHP szerver elindításához:
cd C:\Sites\ci-app php -S localhost:3000
Itt:
- A fenti parancs a projektkönyvtárba navigál, és a 3000-es porton elindítja a beépített szervert.
Töltsd be a következőket URL a böngésződbe: http://localhost:3000/ar/insertA következő eredményt fogja kapni:
order has successfully been created
Nyissa meg a MySQL oktatóanyag adatbázisát, és ellenőrizze a megrendelések táblázatát. Látni fogja az újonnan létrehozott sort, ahogy az az alábbi képen látható:
CodeGyújtó Aktív rekord kiválasztása
Ebben a szakaszban azt fogjuk látni, hogyan olvashatjuk be az adatbázis rekordjait, és hogyan jeleníthetjük meg azokat a webböngészőben rendezetlen listaként. Adjuk hozzá a következő metódust az ActiveRecordControllerhez:
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>"; }
Itt:
- $query = $this->db->get('orders'); lefuttatja a kiválasztó lekérdezést az orders táblán, kiválasztva az összes mezőt.
- visszhang „ Rendelések listázása ”; egy HTML címsort jelenít meg.
- visszhang „ ”; kinyomtatja egy rendezetlen HTML lista nyitó címkéjét.
- foreach ($query->result() as $row) {…} végigmegy az adatbázisból visszaadott eredményeken, és echo „ $sor->ügyfél_neve ”; kinyomtatja a customer_name értéket.
Mielőtt betöltenéd a URL, további rekordokat adhatsz hozzá az adatbázishoz. Most definiáljunk egy útvonalat a SELECT lekérdezéshez. Nyisd meg az application/config/routes.php fájlt, és add hozzá a következő útvonalat:
$route['ar'] = 'activerecordcontroller';
Itt:
- Az „ar” útvonal az ActiveRecordController osztály index metódusára mutat. Ez az alapértelmezett, ezért nem adtuk meg az index metódust, ahogyan azt a rekordokat beszúró útvonal esetében tettük.
Feltételezve, hogy a webszerver már fut, töltse be a következőket URL: http://localhost:3000/arA webböngészőjében az alábbihoz hasonló eredményeket kell látnia:
CodeGyújtó frissítés aktív rekord
Ebben a szakaszban arról lesz szó, hogyan használható az Active Record az adatbázis frissítéséhez. Tegyük fel, hogy a Joe Thomas ügyfélnevet Joe-ra szeretnénk frissíteni. Adjuk hozzá a következő metódust az ActiveRecordController osztályhoz:
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
Itt:
- A $data = […] paraméter határozza meg az adatbázistáblában frissíteni kívánt mezőket és értékeket.
- $this->db->where('id', 1); beállítja a frissítő lekérdezés where záradékát.
- $this->db->update('rendelések', $adat); generálja az SQL frissítési lekérdezést, és végrehajtja azt az adatbázisunkban.
A fenti kód a következő SQL utasítást állítja elő:
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Frissítsük most az application/config/routes.php fájlt, és adjuk hozzá a következő útvonalat:
$route['ar/update'] = 'activerecordcontroller/update_order';
Mentse el a módosításokat, és töltse be a következőket URL a webböngészőben:
Most jelenítsük meg az adatbázisrekordokat, és nézzük meg, hogy a módosítás érvénybe lépett-e.
Amint a fenti képen látható, az első rekord Joe Thomasról Joe-ra frissült.
CodeGyújtó Aktív rekord törlése
Most törölni fogunk egy rekordot az adatbázisból. Törölni fogjuk a 3-as azonosítójú rekordot. Adjuk hozzá a következő metódust az ActiveRecordControllerhez:
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
Itt:
- $this->db->where('id', 3); beállítja a where záradékot.
- $this->db->delete('orders'); törli az adatbázis sorát az orders táblában a where záradékkal beállított kritériumok alapján.
A fenti kód végrehajtásához töltse be a következőt URL a webböngésződben: http://localhost:3000/ar/delete.




