Data er blodlinjen for de fleste applikationer. Dataene skal opbevares på en sådan måde, at de kan analyseres yderligere for at give indsigt og lette forretningsbeslutninger. Dataene gemmes normalt i databasen. Blandt de største bekymringer, når man interagerer med databasen, er sikkerhed, let adgang og databasesælgers specifikke implementeringer af Structured Query Language (SQL).
Aktiv registrering er et designmønster, der gør det let at interagere med databasen på en let, sikker og veltalende måde.
Den aktive registrering har følgende fordele
- Indsæt, opdater og slet poster med enkle metakæder af aktiv post
- Afsender brugerinput på en sikker måde ved hjælp af parametre
- Giver dig mulighed for at arbejde med flere databasemotorer såsom MySQL, SQL Server osv. Uden at omskrive applikationskoden
- CodeIgniter bruger drivere, der er specifikke for hver databasemotor i baggrunden.
I denne vejledning lærer du:
- Sådan bruges Active Record: Eksempel
- CodeIgniter databasekonfiguration
- CodeIgniter Indsæt aktiv post
- CodeIgniter Vælg Active Record
- CodeIgniter opdater Active Record
- CodeIgniter Slet aktiv post
Sådan bruges Active Record: Eksempel
I denne vejledning diskuterer vi vejledningsdatabasen. Vi har to borde, den ene med ordrer og den anden med detaljer.
Denne vejledning forudsætter, at du har MySQL-database installeret og kører.
Kør følgende scripts for at oprette tutorial-database:
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;
Ovenstående kode opretter en database med navnet ci_active_record og opretter to tabeller, nemlig ordrer og order_details. Forholdet mellem de to tabeller er defineret af kolonne-id'et i ordrer og order_id i order_details-tabellen.
CodeIgniter databasekonfiguration
Vi konfigurerer nu vores applikation til at kunne kommunikere med denne database.
Åbn databasekonfigurationsfil placeret i application / config / database.php
find følgende linjer i konfigurationsfilen
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Opdater ovenstående kode til følgende
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Bemærk: du bliver nødt til at erstatte brugernavnet og adgangskoden til dem, der matcher din konfiguration af MySQL.
Ud over databasekonfigurationsoplysningerne er vi også nødt til at fortælle CodeIgniter at indlæse databasebiblioteket, når det indlæses
Trin 1) Åbn følgende filapplikation / config / autoload.php
Trin 2) Find $ autoload array-nøglebibliotekerne og indlæs databasebiblioteket som vist nedenfor
$autoload['libraries'] = array('database');
HER,
- Ovenstående kode indlæser databasebiblioteket, når applikationen starter
CodeIgniter Indsæt aktiv post
Til testformål opretter vi en controller og definerede ruter, som vi vil bruge til at interagere med vores applikation via aktiv registrering.
Opret en ny filapplikation / controllere / ActiveRecordController.php
Føj følgende kode til 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, der bruger databasetabelnavne som arraynøgler og tildeler værdier til dem
- $ dette-> db-> indsæt ('ordrer', $ data); kalder indsætningsmetoden i databasebiblioteket, sender tabellen navnebestillinger og arrayvariablen $ data som parameter. Denne linje genererer SQL INSERT-sætningen ved hjælp af arraynøglerne som feltnavne og arrayværdierne som de værdier, der skal indsættes i databasen.
Nu hvor vi med succes har oprettet controller-metoden til aktiv registrering, bliver vi nu nødt til at oprette en rute, som vi kalder for at udføre controller-metoden.
Åbn nu routes.php i application / config / routes.php
tilføj følgende linje til ruterne
$route['ar/insert'] = 'activerecordcontroller/store_order';
HER,
- Vi definerer en rute ar / indsæt, der kalder ActiveRecordController's butiksordre.
Lad os nu starte webserveren for at teste vores metode.
Kør følgende kommando for at starte den indbyggede server til PHP
cd C:\Sites\ci-appphp -S localhost:3000
HER,
- Ovenstående kommandobrowser til kommandolinjen og start den indbyggede server ved port 3000.
Indlæs følgende URL i din browser
http: // localhost: 3000 / ar / indsæt
Du får følgende resultater
order has successfully been created
Åbn MySQL tutorial database, og tjek ordretabellen
Du er i stand til den nyoprettede række som vist på billedet nedenfor
CodeIgniter Vælg Active Record
I dette afsnit vil vi se, hvordan man læser de poster, vi har i databasen, og viser dem i webbrowseren som en ikke-ordnet liste
Føj følgende metode til ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
HER,
- $ forespørgsel = $ dette-> db-> get ('ordrer'); kører select-forespørgslen mod ordretabellen og vælger alle felterne
- ekko "
Ordreliste
"; viser en HTML-overskrift i størrelse 3 - ekko "
- "; udskriver åbningskoden til ikke-ordnet HTML-liste
- foreach ($ query-> result () som $ row) {…} brugte for-loop til at gennemløbe de resultater, der returneres fra databasen. ekko "
- $ række-> kundenavn "; udskriver kundenavn fra databasen
Før du indlæser følgende URL, kan du indlæse et par flere poster til databasen.
Lad os nu definere en rute til SELECT-forespørgslen
Åbn tabellen application / config / routes.php
Tilføj følgende rute
$route['ar'] = 'activerecordcontroller';
HER,
- Ruten ar peger på indeksmetoden i ActiveRecordController-klassen. Dette er som standard, hvorfor vi ikke specificerede indeksmetoden, som du gjorde for den rute, der indsætter poster
Forudsat at webserveren allerede kører, skal du indlæse følgende URL
http: // localhost: 3000 / ar
Du skal være i stand til at se resultater, der meget ligner følgende i din webbrowser
CodeIgniter opdater Active Record
I dette afsnit fortæller vi, hvordan du bruger den aktive post til at opdatere databasen. Lad os sige, at vi vil opdatere kundenavnet Joe Thomas til Joe.
Føj følgende metode til 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 de felter og værdier, som vi ønsker at opdatere i databasetabellen
- $ dette-> db-> hvor ('id', 1); indstiller hvor-klausulen i opdateringsforespørgslen
- $ dette-> db-> opdatering ('ordrer', $ data); genererer SQL-opdateringsforespørgslen og udfører den i vores database.
Ovenstående kode producerer følgende SQL-sætning
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Lad os nu opdatere routes.php-applikationen / config / routes.php
Tilføj følgende rute
$route['ar/update'] = 'activerecordcontroller/update_order';
Gem ændringerne
Indlæs følgende URL i webbrowseren
Lad os nu vise databaseposterne og se, om ændringerne er blevet påvirket.
Som du kan se fra ovenstående billede, er den første post blevet opdateret fra Joe Thomas til Joe.
CodeIgniter Slet aktiv post
Vi sletter nu en post fra databasen. Vi sletter posten med id'et 3.
Føj følgende metode til 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); angiver hvor-klausulen
- $ dette-> db-> slet ('ordrer'); sletter databaseraden i ordretabellen baseret på de kriterier, der er angivet ved hjælp af hvor-klausulen.
For at udføre ovenstående kode skal du indlæse følgende URL i vores webbrowser
http: // localhost: 3000 / ar / slet
Resumé
I denne vejledning har du lært, hvordan man arbejder med en aktiv post for at indsætte, opdatere, slette og vælge poster fra databasen. Vi arbejdede med statiske værdier for at oprette poster, opdatere og slette. I den næste vejledning opretter vi en brugergrænseflade, som brugeren kan bruge til at oprette poster dynamisk i databasen.