Codeigniter Active Record: Beszúrás, Kiválasztás, Frissítés, Törlés

Az adatok a legtöbb alkalmazás vérvonalát képezik. Az adatokat úgy kell tárolni, hogy azok tovább elemezhetők legyenek, hogy betekintést nyerjenek és megkönnyítsék az üzleti döntéseket. Az adatokat általában az adatbázisban tárolják. Az adatbázissal való interakció során felmerülő fő szempontok közé tartozik a biztonság, a könnyű hozzáférés és a Structured Query Language (SQL) adatbázis-gyártó-specifikus megvalósítása.

Az Active Record egy tervezési minta, amely megkönnyíti az adatbázissal való egyszerű, biztonságos és ékesszóló interakciót.

Az aktív rekordnak a következő előnyei vannak

  • Rekordok beszúrása, frissítése és törlése az aktív rekordok egyszerű módszerláncaival
  • A felhasználói bevitelt biztonságos módon, paraméterek használatával küldi el
  • Lehetővé teszi, hogy több adatbázis-motorral dolgozzon, mint pl MySQL, SQL Server stb. az alkalmazás kódjának átírása nélkül
  • A CodeIgniter az egyes adatbázis-motorokhoz specifikus illesztőprogramokat használ a háttérben.

Az Active Record használata: Példa

Ebben az oktatóanyagban az oktatóanyag-adatbázisról fogunk beszélni. Két asztalunk lesz, az egyik a rendelésekkel, a másik a részletekkel.

Ez az oktatóanyag feltételezi, hogy rendelkezik MySQL az adatbázis telepítve van és fut.

Futtassa a következő szkripteket az oktatói 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, és két táblát hoz létre, nevezetesen az orders és order_details. A két tábla közötti kapcsolatot a rendelések oszlopazonosítója, az order_details táblában pedig az order_id határozza meg.

CodeIgniter adatbázis-konfiguráció

Most úgy konfiguráljuk az alkalmazásunkat, hogy képes legyen kommunikálni ezzel az adatbázissal.

Nyissa meg az application/config/database.php fájlban található adatbázis-konfigurációs fájlt

keresse meg a következő sorokat a konfigurációs fájlban

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

Frissítse a fenti kódot a következőre

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

Jegyzet: le kell cserélnie a felhasználónevet és a jelszót azokra, amelyek megfelelnek az Ön konfigurációjának MySQL.

Az adatbázis-konfiguráció részletein kívül azt is meg kell mondanunk a CodeIgniternek, hogy töltse be az adatbázis-könyvtárat, amikor betöltődik

Step 1) Nyissa meg a következő fájlt: application/config/autoload.php

Step 2) Keresse meg az $autoload tömb kulcskönyvtárait, é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ázis-könyvtárat az alkalmazás indításakor

CodeIgniter Aktív rekord beszúrása

Tesztelési célokra létrehozunk egy vezérlőt és meghatározott útvonalakat, amelyeket az alkalmazásunkkal való interakcióhoz használunk az aktív rekordon keresztül.

Hozzon létre egy új fájlt application/controllers/ActiveRecordController.php

Adja hozzá a következő kódot az ActiveRecordController.php fájlhoz

<?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 tömbváltozót definiál, amely az adatbázis táblaneveit használja tömbkulcsként, és értékeket rendel hozzájuk
  • $this->db->insert('rendelések', $adat); meghívja az adatbázis-könyvtár beillesztési metódusát, paraméterként átadja a táblanév-rendeléseket és a $data tömbváltozót. Ez a sor előállítja az SQL INSERT utasítást a tömbkulcsok mezőnévként és a tömbértékek az adatbázisba beszúrandó értékek használatával.

Most, hogy sikeresen létrehoztuk a vezérlő metódusát az aktív rekordhoz, létre kell hoznunk egy útvonalat, amelyet meg fogunk hívni a vezérlő metódus végrehajtásához.

Most nyissa meg a routes.php fájlt az application/config/routes.php fájlban

add hozzá a következő sort az útvonalakhoz

$route['ar/insert'] = 'activerecordcontroller/store_order';

ITT,

  • Meghatározunk egy ar/insert útvonalat, amely meghívja az ActiveRecordController store_order-jét.

Most indítsuk el a webszervert, hogy teszteljük a módszerünket.

Futtassa a következő parancsot a PHP beépített szerverének elindításához

cd C:\Sites\ci-app
php -S localhost:3000

ITT,

  • A fenti parancsböngészővel lépjen a parancssorba, és indítsa el a beépített szervert a 3000-es porton.

Töltse be a következő URL-t a böngészőjébe

http://localhost:3000/ar/insert

A következő eredményeket kapja

order has successfully been created

Nyissa meg a MySQL oktató adatbázist, és ellenőrizze a rendelési táblázatot

Az alábbi képen látható módon újonnan létrehozott sort hozhat létre

CodeIgniter Aktív rekord beszúrása

CodeIgniter Válassza az Aktív rekordot

Ebben a részben látni fogjuk, hogyan olvashatjuk be az adatbázisban lévő rekordokat, és hogyan jeleníthetjük meg őket a webböngészőben rendezetlen listaként

Adja hozzá a következő módszert 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('rendelések'); lefuttatja a kiválasztási lekérdezést a rendelési táblázatban, és kiválasztja az összes mezőt
  • visszhang" Megrendelések listája ”; 4-as méretű HTML-címsort jelenít meg
  • visszhang" ”; kinyomtatja a rendezetlen HTML lista nyitó címkéjét
  • foreach ($query->result() mint $row) {…} a for ciklust használta az adatbázisból visszaadott eredmények között. visszhang" $sor->ügyfélnév ”; kiírja az ügyfél_nevet az adatbázisból

Mielőtt betölti a következő URL-címet, betölthet még néhány rekordot az adatbázisba.

Most határozzunk meg egy útvonalat a SELECT lekérdezéshez

Nyissa meg az application/config/routes.php táblát

Adja hozzá a következő útvonalat

$route['ar'] = 'activerecordcontroller';

ITT,

  • Az ar útvonal az ActiveRecordController osztály index metódusára mutat. Alapértelmezés szerint ez az oka annak, hogy nem adtuk meg az indexmódszert, ahogyan a rekordokat beszúró útvonalhoz

Feltéve, hogy a webszerver már fut, töltse be a következő URL-t

http://localhost:3000/ar

A webböngészőben olyan eredményeket kell látnia, amelyek nagyon hasonlóak a következőhöz

CodeIgniter Válassza az Aktív rekordot

CodeIgniter Aktív rekord frissítése

Ebben a részben arról fogunk beszélni, hogyan lehet az aktív rekordot használni az adatbázis frissítéséhez. Tegyük fel, hogy a Joe Thomas ügyfélnevet Joe-ra szeretnénk frissíteni.

Adja 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 = […] meghatározza azokat a mezőket és értékeket, amelyeket frissíteni kívánunk az adatbázistáblában
  • $this->db->where('id', 1); beállítja a frissítési 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;

Most frissítsük a routes.php application/config/routes.php fájlt

Adja hozzá a következő útvonalat

$route['ar/update'] = 'activerecordcontroller/update_order';

Mentse el a változtatásokat

Töltse be a következő URL-t a webböngészőbe

CodeIgniter Aktív rekord frissítése

Most jelenítsük meg az adatbázis rekordokat, és nézzük meg, hogy a változások érintettek-e.

CodeIgniter Aktív rekord frissítése

Amint az a fenti képen látható, az első rekord Joe Thomasról Joe-ra frissült.

CodeIgniter Aktív rekord törlése

Most törölni fogunk egy rekordot az adatbázisból. A 3-as azonosítójú rekordot töröljük.

Adja hozzá a következő módszert 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', 1); beállítja a where záradékot
  • $this->db->delete('rendelések'); törli az adatbázis sort a rendelések táblájában a where záradékkal beállított feltételek alapján.

A fenti kód végrehajtásához töltse be a következő URL-t a webböngészőnkbe

http://localhost:3000/ar/delete

Összegzésként

Ebben az oktatóanyagban megtanulta, hogyan kell aktív rekordokkal dolgozni rekordok beszúrásához, frissítéséhez, törléséhez és kiválasztásához az adatbázisból. Statikus értékekkel dolgoztunk a rekordok létrehozásában, frissítésében és törlésében. A következő oktatóanyagban létrehozunk egy felhasználói felületet, amellyel a felhasználó dinamikusan hozhat létre rekordokat az adatbázisban.