Codeigniter Active Record: Infoga, markera, uppdatera, ta bort

Innehållsförteckning:

Anonim

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.