Data är blodlinjen för de flesta applikationer. Uppgifterna måste lagras på ett sådant sätt att de kan analyseras ytterligare för att ge insikter och underlätta affärsbeslut. Uppgifterna lagras vanligtvis i databasen. Bland de viktigaste problemen när man interagerar med databasen är säkerhet, enkel åtkomst och databasleverantörsspecifika implementeringar av Structured Query Language (SQL).
Active Record är ett designmönster som gör det enkelt att interagera med databasen på ett enkelt, säkert och vältaligt sätt.
Den aktiva posten har följande fördelar
- Infoga, uppdatera och ta bort poster med enkla metodkedjor för aktiv post
- Skickar användarinmatningen på ett säkert sätt med hjälp av parametrar
- Låter dig arbeta med flera databasmotorer som MySQL, SQL Server etc. utan att skriva om applikationskoden
- CodeIgniter använder drivrutiner som är specifika för varje databasmotor i bakgrunden.
I den här handledningen lär du dig:
- Hur man använder Active Record: Exempel
- CodeIgniter databas konfiguration
- CodeIgniter Infoga aktiv post
- CodeIgniter Välj Active Record
- CodeIgniter Update Active Record
- CodeIgniter Ta bort aktiv post
Hur man använder Active Record: Exempel
I denna handledning kommer vi att diskutera handledningsdatabasen. Vi kommer att ha två bord, ett med beställningar och det andra med detaljer.
Denna handledning förutsätter att MySQL-databasen är installerad igång.
Kör följande skript för att skapa handledningsdatabas:
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;
Ovanstående kod skapar en databas med namnet ci_active_record och skapar två tabeller, nämligen order och order_details. Förhållandet mellan de två tabellerna definieras av kolumn-id i order och order_id i order_details-tabellen.
CodeIgniter databas konfiguration
Vi konfigurerar nu vår applikation så att den kan kommunicera med denna databas.
Öppna databasens konfigurationsfil som finns i application / config / database.php
hitta följande rader i konfigurationsfilen
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Uppdatera ovanstående kod till följande
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Obs! Du måste ersätta användarnamnet och lösenordet till de som matchar din konfiguration av MySQL.
Förutom databasens konfigurationsinformation behöver vi också be CodeIgniter att ladda databasbiblioteket när det laddas
Steg 1) Öppna följande filapplikation / config / autoload.php
Steg 2) Leta reda på nyckelbiblioteken för $ autoload array och ladda databasbiblioteket enligt nedan
$autoload['libraries'] = array('database');
HÄR,
- Ovanstående kod laddar databasbiblioteket när programmet startar
CodeIgniter Infoga aktiv post
För teständamål skapar vi en styrenhet och definierade rutter som vi kommer att använda för att interagera med vår applikation via aktiv post.
Skapa en ny filapplikation / -kontroller / ActiveRecordController.php
Lägg till följande kod i ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
HÄR,
- $ data = […] definierar en arrayvariabeldata som använder databastabellnamn som arraynycklar och tilldelar värden till dem
- $ this-> db-> insert ('orders', $ data); anropar infogningsmetoden för databasbiblioteket, skickar in tabellnamnordren och arrayvariabeln $ data som parameter. Denna rad genererar SQL INSERT-satsen med hjälp av matrisenycklarna som fältnamn och arrayvärdena som värden som ska infogas i databasen.
Nu när vi framgångsrikt har skapat styrenhetsmetoden för aktiv registrering, måste vi nu skapa en rutt som vi kommer att ringa för att utföra styrenhetsmetoden.
Öppna nu routes.php i application / config / routes.php
lägg till följande rad till rutterna
$route['ar/insert'] = 'activerecordcontroller/store_order';
HÄR,
- Vi definierar en rutt ar / infoga som anropar store_order av ActiveRecordController.
Låt oss nu starta webbservern för att testa vår metod.
Kör följande kommando för att starta den inbyggda servern för PHP
cd C:\Sites\ci-appphp -S localhost:3000
HÄR,
- Ovanstående kommandor webbläsare till kommandoraden och starta den inbyggda servern vid port 3000.
Ladda följande URL i din webbläsare
http: // localhost: 3000 / ar / infoga
Du får följande resultat
order has successfully been created
Öppna MySQL-handledningsdatabasen och kontrollera ordertabellen
Du kommer att kunna skapa en ny rad som visas i bilden nedan
CodeIgniter Välj Active Record
I det här avsnittet kommer vi att se hur vi kan läsa de poster vi har i databasen och visa dem i webbläsaren som en oordnad lista
Lägg till följande metod i ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
HÄR,
- $ query = $ this-> db-> get ('orders'); kör selectfrågan mot ordertabellen och markerar alla fält
- eko "
Orderlista
"; visar en HTML-rubrik av storlek 3 - eko "
- "; skriver ut öppningstaggen för obeställd HTML-lista
- foreach ($ query-> result () som $ row) {...} använde for-loop för att gå igenom resultaten som returnerats från databasen. eko "
- $ row-> customer_name "; skriver ut kundnamn från databasen
Innan du laddar följande URL kan du ladda ytterligare ett par poster till databasen.
Låter oss nu definiera en rutt för SELECT-frågan
Öppna tabellen application / config / routes.php
Lägg till följande rutt
$route['ar'] = 'activerecordcontroller';
HÄR,
- Rutten ar pekar på indexmetoden för ActiveRecordController-klassen. Det här är som standard varför vi inte angav indexmetoden som du gjorde för den rutt som infogar poster
Förutsatt att webbservern redan körs, ladda in följande URL
http: // localhost: 3000 / ar
Du bör kunna se resultat som mycket liknar följande i din webbläsare
CodeIgniter Update Active Record
I det här avsnittet kommer vi att berätta om hur du använder den aktiva posten för att uppdatera databasen. Låt oss säga att vi vill uppdatera kundnamnet Joe Thomas till Joe.
Lägg till följande metod i ActiveRecordController-klassen
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
HÄR,
- $ data = […] definierar fälten och värdena som vi vill uppdatera i databastabellen
- $ detta-> db-> där ('id', 1); ställer in var-satsen i uppdateringsfrågan
- $ this-> db-> update ('orders', $ data); genererar SQL-uppdateringsfrågan och kör den i vår databas.
Ovanstående kod kommer att producera följande SQL-uttalande
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Låt oss nu uppdatera rutter.php-applikationen / config / rutter.php
Lägg till följande rutt
$route['ar/update'] = 'activerecordcontroller/update_order';
Spara ändringarna
Ladda följande URL i webbläsaren
Låt oss nu visa databasposterna och se om ändringarna har påverkats.
Som du kan se från ovanstående bild har den första posten uppdaterats från Joe Thomas till Joe.
CodeIgniter Ta bort aktiv post
Vi tar nu bort en post från databasen. Vi raderar posten med id: t 3.
Lägg till följande metod i ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
HÄR,
- $ detta-> db-> där ('id', 1); anger var-klausulen
- $ this-> db-> delete ('orders'); tar bort databasraden i ordertabellen baserat på de kriterier som ställts in med hjälp av where-satsen.
För att köra ovanstående kod, ladda in följande URL i vår webbläsare
http: // localhost: 3000 / ar / radera
Sammanfattning
I den här handledningen har du lärt dig hur man arbetar med en aktiv post för att infoga, uppdatera, ta bort och välja poster från databasen. Vi arbetade med statiska värden för att skapa poster, uppdatera och ta bort. I nästa handledning skapar vi ett användargränssnitt som användaren kan använda för att skapa poster dynamiskt i databasen.