Podatki so kri večine aplikacij. Podatke je treba hraniti tako, da jih je mogoče nadalje analizirati, da bi dobili vpogled in olajšali poslovne odločitve. Podatki so običajno shranjeni v zbirki podatkov. Med glavnimi skrbmi pri interakciji z bazo podatkov je varnost, enostavnost dostopa in izvedbe strukturiranega poizvedbenega jezika (SQL), ki jih določa prodajalec baze podatkov.
Aktivni zapis je oblikovalski vzorec, ki olajša interakcijo z bazo podatkov na enostaven, varen in zgovoren način.
Aktivni zapis ima naslednje prednosti
- Vstavite, posodobite in izbrišite zapise s preprostimi verigami aktivnih zapisov
- Predloži uporabniški vnos na varen način z uporabo parametrov
- Omogoča vam delo z več mehanizmi zbirk podatkov, kot so MySQL, SQL Server itd., Ne da bi prepisali kodo aplikacije
- CodeIgniter uporablja gonilnike, specifične za vsak mehanizem baze podatkov v ozadju.
V tej vadnici boste izvedeli:
- Kako uporabljati Active Record: primer
- Konfiguracija baze podatkov CodeIgniter
- CodeIgniter Vstavi aktivni zapis
- CodeIgniter Izberite Active Record
- CodeIgniter Posodobi aktivni zapis
- CodeIgniter Izbriši aktivni zapis
Kako uporabljati Active Record: primer
V tej vadnici bomo obravnavali bazo podatkov o vajah. Imeli bomo dve tabeli, eno z naročili, drugo s podrobnostmi.
Ta vadnica predpostavlja, da imate nameščeno in delujočo bazo podatkov MySQL.
Za izdelavo baze podatkov vadnic zaženite naslednje skripte:
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;
Zgornja koda ustvari bazo podatkov z imenom ci_active_record in ustvari dve tabeli, in sicer naročila in podrobnosti_naročila. Razmerje med obema tabelama je določeno z ID-jem stolpca v vrstnem redu naročila in id_naročila v tabeli z_detajli.
Konfiguracija baze podatkov CodeIgniter
Zdaj bomo konfigurirali našo aplikacijo tako, da bo lahko komunicirala s to bazo podatkov.
Odprite konfiguracijsko datoteko baze podatkov v aplikaciji / config / database.php
poiščite naslednje vrstice v konfiguracijski datoteki
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Zgornjo kodo posodobite na naslednje
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Opomba: uporabniško ime in geslo boste morali zamenjati s tistimi, ki ustrezajo vaši konfiguraciji MySQL.
Poleg podrobnosti o konfiguraciji baze podatkov moramo CodeIgniterju naročiti tudi, naj ob nalaganju naloži knjižnico baze podatkov
Korak 1) Odprite naslednjo datoteko application / config / autoload.php
Korak 2) Poiščite knjižnice ključev polja $ autoload in naložite knjižnico zbirke podatkov, kot je prikazano spodaj
$autoload['libraries'] = array('database');
TUKAJ,
- Zgornja koda naloži knjižnico zbirke podatkov, ko se aplikacija zažene
CodeIgniter Vstavi aktivni zapis
Za namene testiranja bomo ustvarili krmilnik in določili poti, ki jih bomo uporabljali za interakcijo z našo aplikacijo prek aktivnega zapisa.
Ustvarite novo datotečno aplikacijo / krmilnike / ActiveRecordController.php
V ActiveRecordController.php dodajte naslednjo kodo
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
TUKAJ,
- $ data = […] definira podatke spremenljivke matrike, ki kot ključe matrike uporablja imena tabel baze podatkov in jim dodeli vrednosti
- $ this-> db-> insert ('naročila', $ podatkov); pokliče metodo vstavitve knjižnice baze podatkov, kot parameter posreduje vrstni red imen tabele in spremenljivko polja $ data. Ta vrstica generira stavek SQL INSERT z uporabo matričnih tipk kot imen polj in vrednosti matrike kot vrednosti, ki jih je treba vstaviti v bazo podatkov.
Zdaj, ko smo uspešno ustvarili metodo krmilnika za aktivni zapis, bomo zdaj morali ustvariti pot, ki jo bomo poklicali za izvajanje metode krmilnika.
Zdaj odprite routes.php v aplikaciji / config / routes.php
na poti dodajte naslednjo vrstico
$route['ar/insert'] = 'activerecordcontroller/store_order';
TUKAJ,
- Določimo pot ar / insert, ki pokliče store_order ActiveRecordController.
Zdaj zaženimo spletni strežnik, da preizkusimo našo metodo.
Zaženite naslednji ukaz, da zaženete vgrajeni strežnik za PHP
cd C:\Sites\ci-appphp -S localhost:3000
TUKAJ,
- Zgornji brskalnik ukazov v ukazno vrstico in zaženite vgrajeni strežnik na vratih 3000.
V svoj brskalnik naložite naslednji URL
http: // localhost: 3000 / ar / insert
Dobili boste naslednje rezultate
order has successfully been created
Odprite bazo podatkov o vajah MySQL in preverite tabelo naročil
Na novo ustvarjeno vrstico boste lahko prikazali na spodnji sliki
CodeIgniter Izberite Active Record
V tem poglavju bomo videli, kako prebrati zapise, ki jih imamo v bazi podatkov, in jih prikazati v spletnem brskalniku kot neurejen seznam
V sistem ActiveRecordController dodajte naslednjo metodo
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
TUKAJ,
- $ query = $ this-> db-> get ('naročila'); zažene poizvedbo select v tabeli naročil, pri čemer izbere vsa polja
- echo "
Seznam naročil
"; prikaže naslov HTML velikosti 3 - odmev "
- "; natisne uvodno oznako za neurejeni seznam HTML
- foreach ($ query-> rezultat () kot $ vrstica) {…} je zanko for uporabil za zanko med rezultati, vrnjenimi iz baze podatkov. echo "
- $ row-> client_name "; iz baze podatkov natisne ime stranke
Preden naložite naslednji URL, lahko v bazo podatkov naložite še nekaj zapisov.
Zdaj lahko določimo pot za poizvedbo SELECT
Odprite tabelo application / config / routes.php
Dodajte naslednjo pot
$route['ar'] = 'activerecordcontroller';
TUKAJ,
- Pot usmerja na indeksno metodo razreda ActiveRecordController. To je privzeto, zato nismo določili metode indeksa kot vi za pot, ki vstavlja zapise
Ob predpostavki, da se spletni strežnik že izvaja, naložite naslednji URL
http: // localhost: 3000 / ar
V vašem brskalniku bi morali videti rezultate, ki so zelo podobni naslednjim
CodeIgniter Posodobi aktivni zapis
V tem poglavju bomo govorili o tem, kako uporabiti aktivni zapis za posodobitev baze podatkov. Recimo, da želimo posodobiti ime stranke Joe Thomas na Joe.
V razred ActiveRecordController dodajte naslednjo metodo
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
TUKAJ,
- $ data = […] definira polja in vrednosti, ki jih želimo posodobiti v tabeli zbirke podatkov
- $ this-> db-> where ('id', 1); nastavi klavzulo where poizvedbe za posodobitev
- $ this-> db-> update ('naročila', $ podatki); generira poizvedbo za posodobitev SQL in jo izvede proti naši bazi podatkov.
Zgornja koda bo ustvarila naslednji stavek SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Posodobimo zdaj route.php application / config / routes.php
Dodajte naslednjo pot
$route['ar/update'] = 'activerecordcontroller/update_order';
Shranite spremembe
V spletni brskalnik naložite naslednji URL
Pokažimo zdaj zapise baze podatkov in preverimo, ali so spremembe vplivale.
Kot lahko vidite na zgornji sliki, je bil prvi zapis posodobljen z Joe Thomas na Joe.
CodeIgniter Izbriši aktivni zapis
Zdaj bomo zapis izbrisali iz baze podatkov. Zapis bomo izbrisali z id 3.
V sistem ActiveRecordController dodajte naslednjo metodo
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
TUKAJ,
- $ this-> db-> where ('id', 1); določa klavzulo where
- $ this-> db-> delete ('naročila'); izbriše vrstico baze podatkov v tabeli naročil na podlagi meril, nastavljenih z uporabo klavzule where.
Za izvedbo zgornje kode v naš spletni brskalnik naložite naslednji URL
http: // localhost: 3000 / ar / delete
Povzetek
V tej vadnici ste se naučili delati z aktivnim zapisom za vstavljanje, posodabljanje, brisanje in izbiranje zapisov iz baze podatkov. S statičnimi vrednostmi smo delali za ustvarjanje zapisov, posodabljanje in brisanje. V naslednji vadnici bomo ustvarili uporabniški vmesnik, ki ga lahko uporabnik uporablja za dinamično ustvarjanje zapisov v zbirki podatkov.