Data er blodlinjen for de fleste applikasjoner. Dataene må lagres på en slik måte at de kan analyseres videre for å gi innsikt og legge til rette for forretningsbeslutninger. Dataene lagres vanligvis i databasen. Blant de viktigste bekymringene når du kommuniserer med databasen, er sikkerhet, enkel tilgang og databaseselgerspesifikke implementeringer av Structured Query Language (SQL).
Active record er et designmønster som gjør det enkelt å samhandle med databasen på en enkel, sikker og veltalende måte.
Den aktive posten har følgende fordeler
- Sett inn, oppdater og slett poster med enkle metodekjeder med aktiv post
- Send brukerinngangen på en sikker måte ved hjelp av parametere
- Lar deg jobbe med flere databasemotorer som MySQL, SQL Server osv. Uten å omskrive applikasjonskoden
- CodeIgniter bruker drivere som er spesifikke for hver databasemotor i bakgrunnen.
I denne opplæringen lærer du:
- Hvordan bruke Active Record: Eksempel
- CodeIgniter Database Configuration
- CodeIgniter Sett inn Active Record
- CodeIgniter Velg Active Record
- CodeIgniter Oppdater Active Record
- CodeIgniter Slett Active Record
Hvordan bruke Active Record: Eksempel
I denne opplæringen vil vi diskutere opplæringsdatabasen. Vi vil ha to bord, det ene med bestillinger og det andre med detaljer.
Denne opplæringen forutsetter at du har MySQL-databasen installert og kjører.
Kjør følgende skript for å lage opplæringsdatabase:
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;
Ovennevnte kode oppretter en database med navnet ci_active_record og oppretter to tabeller, nemlig ordrer og order_details. Forholdet mellom de to tabellene er definert av kolonne-ID i ordrer og order_id i order_details-tabellen.
CodeIgniter Database Configuration
Vi vil nå konfigurere applikasjonen vår for å kunne kommunisere med denne databasen.
Åpne databasekonfigurasjonsfilen i applikasjonen / config / database.php
finn følgende linjer i konfigurasjonsfilen
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Oppdater koden ovenfor til følgende
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Merk: du må erstatte brukernavnet og passordet til de som samsvarer med konfigurasjonen av MySQL.
I tillegg til databasekonfigurasjonsdetaljene, må vi også gi CodeIgniter beskjed om å laste inn databasebiblioteket når det lastes inn
Trinn 1) Åpne følgende filprogram / config / autoload.php
Trinn 2) Finn $ autoload array-nøkkelbibliotekene og last inn databasebiblioteket som vist nedenfor
$autoload['libraries'] = array('database');
HER,
- Ovennevnte kode laster inn databasebiblioteket når applikasjonen starter
CodeIgniter Sett inn Active Record
For testformål vil vi opprette en kontroller og definerte ruter som vi vil bruke for å samhandle med applikasjonen vår via aktiv post.
Opprett et nytt filprogram / -kontrollere / ActiveRecordController.php
Legg til følgende kode i ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
HER,
- $ data = […] definerer en arrayvarialdata som bruker databasetabellnavn som arraynøkler og tilordner verdier til dem
- $ this-> db-> insert ('orders', $ data); kaller innleggsmetoden til databasebiblioteket, sender inn tabellnavnordrene og arrayvariabelen $ data som parameter. Denne linjen genererer SQL INSERT-setningen ved hjelp av arraynøklene som feltnavn og arrayverdiene som verdiene som skal settes inn i databasen.
Nå som vi har opprettet kontrollermetoden for aktiv registrering, må vi nå lage en rute som vi vil ringe for å utføre kontrollermetoden.
Åpne nå routes.php i application / config / routes.php
legg til følgende linje i rutene
$route['ar/insert'] = 'activerecordcontroller/store_order';
HER,
- Vi definerer en rute ar / innsats som kaller butikkordren til ActiveRecordController.
La oss nå starte webserveren for å teste metoden vår.
Kjør følgende kommando for å starte den innebygde serveren for PHP
cd C:\Sites\ci-appphp -S localhost:3000
HER,
- Ovennevnte kommandoleser til kommandolinjen og start den innebygde serveren ved port 3000.
Last inn følgende URL i nettleseren din
http: // localhost: 3000 / ar / innsats
Du får følgende resultater
order has successfully been created
Åpne opplæringsdatabasen MySQL og sjekk ordretabellen
Du kan nyopprettet rad som vist på bildet nedenfor
CodeIgniter Velg Active Record
I denne delen vil vi se hvordan du kan lese postene vi har i databasen og vise dem i nettleseren som en ikke-ordnet liste
Legg til følgende metode i ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
HER,
- $ query = $ this-> db-> get ('orders'); kjører select-spørringen mot ordretabellen og velger alle feltene
- ekko "
Order Listing
"; viser en HTML-overskrift av størrelse 3 - ekko "
- "; skriver ut åpningskoden for ikke-bestilt HTML-liste
- foreach ($ query-> result () som $ row) {...} brukte for loop til å gå gjennom resultatene som ble returnert fra databasen. ekko "
- $ row-> customer_name "; skriver ut kundenavnet fra databasen
Før du laster inn følgende URL, kan du laste et par poster til databasen.
La oss nå definere en rute for SELECT-spørringen
Åpne applikasjon / config / routes.php tabell
Legg til følgende rute
$route['ar'] = 'activerecordcontroller';
HER,
- Ruten ar peker til indeksmetoden for ActiveRecordController-klassen. Dette er som standard hvorfor vi ikke spesifiserte indeksemetoden slik du gjorde for ruten som setter inn poster
Forutsatt at webserveren allerede kjører, laster du inn følgende URL
http: // localhost: 3000 / ar
Du bør kunne se resultater som ligner mye på følgende i nettleseren din
CodeIgniter Oppdater Active Record
I denne delen vil vi fortelle om hvordan du bruker den aktive posten til å oppdatere databasen. La oss si at vi vil oppdatere kundenavnet Joe Thomas til Joe.
Legg til følgende metode 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';}
HER,
- $ data = […] definerer feltene og verdiene vi ønsker å oppdatere i databasetabellen
- $ dette-> db-> hvor ('id', 1); angir hvor ledd i oppdateringsspørringen
- $ this-> db-> update ('orders', $ data); genererer SQL-oppdateringsspørringen og kjører den mot databasen vår.
Ovennevnte kode vil produsere følgende SQL-setning
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
La oss nå oppdatere routes.php-applikasjonen / config / routes.php
Legg til følgende rute
$route['ar/update'] = 'activerecordcontroller/update_order';
Lagre endringene
Last inn følgende URL i nettleseren
La oss nå vise databasepostene og se om endringene har blitt påvirket.
Som du kan se fra det ovennevnte bildet, er den første platen oppdatert fra Joe Thomas til Joe.
CodeIgniter Slett Active Record
Vi vil nå slette en post fra databasen. Vi vil slette posten med ID 3.
Legg til følgende metode i ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
HER,
- $ dette-> db-> hvor ('id', 1); angir hvor-klausulen
- $ this-> db-> delete ('orders'); sletter databaseraden i ordretabellen basert på kriteriene som er satt ved hjelp av hvor-setningen.
For å utføre ovennevnte kode, last inn følgende URL i nettleseren vår
http: // localhost: 3000 / ar / slett
Sammendrag
I denne opplæringen har du lært hvordan du jobber med en aktiv post for å sette inn, oppdatere, slette og velge poster fra databasen. Vi jobbet med statiske verdier for å lage poster, oppdatere og slette. I neste opplæring vil vi lage et brukergrensesnitt som brukeren kan bruke til å opprette poster dynamisk i databasen.