Codeigniter Active Record: Umetanje, odabir, ažuriranje, brisanje
Podaci su krvna loza većine aplikacija. Podatke je potrebno pohraniti na način da se mogu dalje analizirati kako bi se pružili uvidi i olakšale poslovne odluke. Podaci se obično pohranjuju u bazi podataka. Među glavnim problemima pri interakciji s bazom podataka je sigurnost, jednostavnost pristupa i specifične implementacije Structured Query Language (SQL) dobavljača baze podataka.
Aktivni zapis je obrazac dizajna koji olakšava interakciju s bazom podataka na jednostavan, siguran i elokventan način.
Aktivni zapis ima sljedeće prednosti
- Umetanje, ažuriranje i brisanje zapisa s jednostavnim lancima metoda aktivnog zapisa
- Šalje korisnički unos na siguran način pomoću parametara
- Omogućuje vam rad s višestrukim pogonima baze podataka kao što su MySQL, SQL Server itd. bez ponovnog pisanja koda aplikacije
- CodeIgniter koristi upravljačke programe specifične za svaki motor baze podataka u pozadini.
Kako koristiti Active Record: Primjer
U ovom vodiču raspravljat ćemo o bazi podataka vodiča. Imat ćemo dva stola, jedan s narudžbama, drugi s detaljima.
Ovaj vodič pretpostavlja da imate MySQL baza podataka instalirana i radi.
Pokrenite sljedeće skripte za izradu baze podataka s uputama:
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;
Gornji kod stvara bazu podataka pod nazivom ci_active_record i stvara dvije tablice, naime orders i order_details. Odnos između dvije tablice definiran je id-om stupca u narudžbama i id_narudžbe u tablici s detaljima o narudžbi.
Konfiguracija baze podataka CodeIgniter
Sada ćemo konfigurirati našu aplikaciju da može komunicirati s ovom bazom podataka.
Otvorite konfiguracijsku datoteku baze podataka koja se nalazi u application/config/database.php
pronađite sljedeće retke u konfiguracijskoj datoteci
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Ažurirajte gornji kod na sljedeći
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Bilješka: morat ćete zamijeniti korisničko ime i lozinku onima koji odgovaraju vašoj konfiguraciji MySQL.
Uz detalje konfiguracije baze podataka, također moramo reći CodeIgniteru da učita biblioteku baze podataka kada se učita
Korak 1) Otvorite sljedeću datoteku application/config/autoload.php
Korak 2) Pronađite biblioteke ključeva polja $autoload i učitajte biblioteku baze podataka kao što je prikazano u nastavku
$autoload['libraries'] = array('database');
OVDJE,
- Gornji kod učitava biblioteku baze podataka kada se aplikacija pokrene
CodeIgniter Umetanje aktivnog zapisa
Za potrebe testiranja izradit ćemo kontroler i definirane rute koje ćemo koristiti za interakciju s našom aplikacijom putem aktivnog zapisa.
Napravite novu datoteku application/controllers/ActiveRecordController.php
Dodajte sljedeći kod u 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'; } }
OVDJE,
- $data = […] definira podatke varijable niza koji koristi nazive tablica baze podataka kao ključeve niza i dodjeljuje im vrijednosti
- $this->db->insert('narudžbe', $podaci); poziva metodu umetanja biblioteke baze podataka, prosljeđuje poredak naziva tablice i varijablu polja $data kao parametar. Ovaj redak generira naredbu SQL INSERT koristeći ključeve polja kao imena polja i vrijednosti polja kao vrijednosti koje treba umetnuti u bazu podataka.
Sada kada smo uspješno kreirali metodu kontrolera za aktivni zapis, sada ćemo trebati kreirati rutu koju ćemo pozvati da izvršimo metodu kontrolera.
Sada otvorite routes.php u application/config/routes.php
rutama dodajte sljedeći redak
$route['ar/insert'] = 'activerecordcontroller/store_order';
OVDJE,
- Definiramo rutu ar/insert koja poziva store_order ActiveRecordControllera.
Pokrenimo sada web poslužitelj da testiramo našu metodu.
Pokrenite sljedeću naredbu za pokretanje ugrađenog poslužitelja za PHP
cd C:\Sites\ci-app php -S localhost:3000
OVDJE,
- Gornju naredbu preglednik u naredbeni redak i pokrenite ugrađeni poslužitelj na portu 3000.
Učitajte sljedeći URL u svoj preglednik
http://localhost:3000/ar/insert
Dobit ćete sljedeće rezultate
order has successfully been created
Otvorite MySQL baza podataka s uputama i provjerite tablicu s narudžbama
Moći ćete novostvoreni red kao što je prikazano na slici ispod
CodeIgniter Odaberite Active Record
U ovom odjeljku ćemo vidjeti kako pročitati zapise koje imamo u bazi podataka i prikazati ih u web pregledniku kao nesređenu listu
Dodajte sljedeću metodu u 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>"; }
OVDJE,
- $upit = $this->db->get('narudžbe'); pokreće upit odabira prema tablici naloga odabirući sva polja
- jeka " Popis narudžbi ”; prikazuje HTML naslov veličine 4
- jeka " ”; ispisuje početnu oznaku za neuređeni HTML popis
- foreach ($query->result() as $row) {…} koristio je for petlju za kretanje kroz rezultate vraćene iz baze podataka. jeka " $row->customer_name ”; ispisuje customer_name iz baze podataka
Prije nego što učitate sljedeći URL, možete učitati još nekoliko zapisa u bazu podataka.
Definirajmo sada rutu za SELECT upit
Otvorite tablicu application/config/routes.php
Dodajte sljedeću rutu
$route['ar'] = 'activerecordcontroller';
OVDJE,
- Ruta ar pokazuje na metodu indeksa klase ActiveRecordController. Ovo je prema zadanim postavkama i zato nismo naveli metodu indeksa kao što ste vi učinili za rutu koja umeće zapise
Pod pretpostavkom da web poslužitelj već radi, učitajte sljedeći URL
http://localhost:3000/ar
Trebali biste moći vidjeti rezultate koji su vrlo slični sljedećima u vašem web pregledniku
CodeIgniter ažuriranje aktivnog zapisa
U ovom odjeljku ćemo govoriti o tome kako koristiti aktivni zapis za ažuriranje baze podataka. Recimo da želimo ažurirati ime kupca Joe Thomas u Joe.
Dodajte sljedeću metodu klasi ActiveRecordController
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
OVDJE,
- $data = […] definira polja i vrijednosti koje želimo ažurirati u tablici baze podataka
- $this->db->where('id', 1); postavlja klauzulu where upita za ažuriranje
- $this->db->update('orders', $data); generira SQL upit za ažuriranje i izvršava ga prema našoj bazi podataka.
Gornji kod proizvest će sljedeću SQL naredbu
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Idemo sada ažurirati routes.php aplikaciju/config/routes.php
Dodajte sljedeću rutu
$route['ar/update'] = 'activerecordcontroller/update_order';
Spremite promjene
Učitajte sljedeći URL u web preglednik
Prikažimo sada zapise baze podataka i vidimo jesu li promjene utjecale.
Kao što možete vidjeti na gornjoj slici, prvi zapis je ažuriran iz Joe Thomas u Joe.
CodeIgniter Brisanje aktivnog zapisa
Sada ćemo izbrisati zapis iz baze podataka. Izbrisat ćemo zapis s ID-om 3.
Dodajte sljedeću metodu u ActiveRecordController
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
OVDJE,
- $this->db->where('id', 1); postavlja klauzulu where
- $this->db->delete('narudžbe'); briše redak baze podataka u tablici narudžbi na temelju postavljenih kriterija pomoću klauzule where.
Da biste izvršili gornji kod, učitajte sljedeći URL u naš web preglednik
http://localhost:3000/ar/delete
rezime
U ovom vodiču ste naučili kako raditi s aktivnim zapisom za umetanje, ažuriranje, brisanje i odabir zapisa iz baze podataka. Radili smo sa statičkim vrijednostima za stvaranje zapisa, ažuriranje i brisanje. U sljedećem vodiču izradit ćemo korisničko sučelje koje korisnik može koristiti za dinamičko stvaranje zapisa u bazi podataka.