Codeigniter Active Record: Infoga, Välj, Uppdatera, Ta bort
Data är blodlinjen för de flesta applikationer. Datan behöver lagras på ett sådant sätt att den kan analyseras vidare för att ge insikter och underlätta affärsbeslut. Uppgifterna lagras vanligtvis i databasen. Bland de viktigaste frågorna när du 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 av aktiv post
- Skickar användarinmatningen på ett säkert sätt med hjälp av parametrar
- Låter dig arbeta med flera databasmotorer som t.ex MySQL, SQL Server, etc. utan att skriva om applikationskoden
- CodeIgniter använder drivrutiner som är specifika för varje databasmotor i bakgrunden.
Så här använder du Active Record: Exempel
I den här handledningen kommer vi att diskutera handledningsdatabasen. Vi kommer att ha två bord, det ena med beställningar och det andra med detaljer.
Denna handledning förutsätter att du har MySQL databas installerad och körs.
Kör följande skript för att skapa självstudiedatabas:
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. Relationen mellan de två tabellerna definieras av kolumnen id i order och order_id i order_details tabellen.
CodeIgniter Databas Configuration
Vi kommer nu att konfigurera vår applikation för att kunna kommunicera med denna databas.
Öppna databaskonfigurationsfilen 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',
Notera: du måste byta ut användarnamnet och lösenordet till de som matchar din konfiguration av MySQL.
Förutom databaskonfigurationsdetaljerna måste vi också berätta för CodeIgniter att ladda databasbiblioteket när det laddas
Steg 1) Öppna följande fil application/config/autoload.php
Steg 2) Leta upp $autoload array-nyckelbiblioteken och ladda databasbiblioteket som visas 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 kommer vi att skapa en styrenhet och definierade rutter som vi kommer att använda för att interagera med vår applikation via aktiv post.
Skapa ett nytt filprogram/kontroller/ActiveRecordController.php
Lägg till följande kod till ActiveRecordController.php
<?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'; } }
HÄR,
- $data = […] definierar en arrayvariabeldata som använder databastabellnamn som arraynycklar och tilldelar värden till dem
- $this->db->insert('order', $data); anropar insertmetoden för databasbiblioteket, skickar in tabellnamnsordningarna och arrayvariabeln $data som parameter. Den här raden genererar SQL INSERT-satsen med hjälp av array-nycklarna som fältnamn och array-värdena som de värden som ska infogas i databasen.
Nu när vi framgångsrikt har skapat kontrollmetoden för aktiv registrering, måste vi nu skapa en rutt som vi kommer att anropa för att utföra kontrollmetoden.
Ö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/insert som anropar store_order för 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-app php -S localhost:3000
HÄR,
- Ovanstående kommandobläddrare till kommandoraden och starta den inbyggda servern vid port 3000.
Ladda följande URL i din webbläsare
http://localhost:3000/ar/insert
Du kommer att få följande resultat
order has successfully been created
Öppna MySQL handledningsdatabasen och kontrollera beställningstabellen
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 man läser de poster som vi har i databasen och visar dem i webbläsaren som en oordnad lista
Lägg till följande metod till ActiveRecordController
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>"; }
HÄR,
- $query = $this->db->get('orders'); kör urvalsfrågan mot ordertabellen och markerar alla fält
- eka " Orderlista ”; visar en HTML-rubrik i storlek 4
- eka " ”; skriver ut öppningstaggen för oordnad HTML-lista
- foreach ($query->result() som $row) {...} använde for-loopen för att gå igenom resultaten som returnerades från databasen. eka " $row->kundnamn ”; skriver ut kundnamnet från databasen
Innan du laddar följande URL kan du ladda ett par poster till i databasen.
Låt oss nu definiera en rutt för SELECT-frågan
Öppna application/config/routes.php-tabellen
Lägg till följande rutt
$route['ar'] = 'activerecordcontroller';
HÄR,
- Rutten ar pekar på indexmetoden för ActiveRecordController-klassen. Detta är som standard, det är därför vi inte angav indexmetoden som du gjorde för rutten som infogar poster
Förutsatt att webbservern redan körs, ladda följande URL
http://localhost:3000/ar
Du bör kunna se resultat som liknar följande i din webbläsare
CodeIgniter Uppdatera Active Record
I det här avsnittet kommer vi att prata om hur man 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 till 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 de fält och värden som vi vill uppdatera i databastabellen
- $this->db->where('id', 1); ställer in where-satsen för uppdateringsfrågan
- $this->db->update('order', $data); genererar SQL-uppdateringsfrågan och kör den mot vår databas.
Ovanstående kod kommer att producera följande SQL-sats
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Låt oss nu uppdatera routes.php-applikationen/config/routes.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 kommer nu att radera en post från databasen. Vi kommer att radera posten med ID 3.
Lägg till följande metod till ActiveRecordController
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
HÄR,
- $this->db->where('id', 1); anger where-satsen
- $this->db->delete('ordrar'); 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 följande URL i vår webbläsare
http://localhost:3000/ar/delete
Sammanfattning
I den här handledningen har du lärt dig hur du 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 kommer vi att skapa ett användargränssnitt som användaren kan använda för att skapa poster dynamiskt i databasen.