Datele sunt linia genealogică a majorității aplicațiilor. Datele trebuie stocate în așa fel încât să poată fi analizate în continuare pentru a oferi informații și a facilita deciziile comerciale. Datele sunt de obicei stocate în baza de date. Printre principalele preocupări la interacțiunea cu baza de date se numără securitatea, ușurința accesului și implementările specifice ale furnizorului de baze de date ale Structured Query Language (SQL).
Înregistrarea activă este un model de proiectare care facilitează interacțiunea cu baza de date într-un mod ușor, sigur și elocvent.
Înregistrarea activă are următoarele avantaje
- Inserați, actualizați și ștergeți înregistrări cu metode simple de lanțuri de înregistrări active
- Trimite datele introduse de utilizator într-un mod sigur utilizând parametri
- Vă permite să lucrați cu mai multe motoare de baze de date, cum ar fi MySQL, SQL Server etc., fără a rescrie codul aplicației
- CodeIgniter folosește drivere specifice fiecărui motor de baze de date din fundal.
În acest tutorial, veți învăța:
- Cum se folosește Active Record: Exemplu
- Configurarea bazei de date CodeIgniter
- CodeIgniter Insert Active Record
- CodeIgniter Selectați înregistrare activă
- Actualizare înregistrare activă CodeIgniter
- CodeIgniter Delete Active Record
Cum se folosește Active Record: Exemplu
În acest tutorial, vom discuta baza de date tutoriale. Vom avea două tabele, una cu comenzi cealaltă cu detalii.
Acest tutorial presupune că aveți instalată și rulată baza de date MySQL.
Rulați următoarele scripturi pentru a crea baza de date tutoriale:
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;
Codul de mai sus creează o bază de date numită ci_active_record și creează două tabele și anume ordine și ordine_detalii. Relația dintre cele două tabele este definită de codul coloanei din comenzi și de comanda_id în tabelul comenzi_detalii.
Configurarea bazei de date CodeIgniter
Vom configura acum aplicația noastră pentru a putea comunica cu această bază de date.
Deschideți fișierul de configurare a bazei de date aflat în application / config / database.php
localizați următoarele linii în fișierul de configurare
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Actualizați codul de mai sus la următorul
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Notă: va trebui să înlocuiți numele de utilizator și parola cu cele care se potrivesc cu configurația dvs. MySQL.
În plus față de detaliile de configurare a bazei de date, trebuie să îi spunem și CodeIgniter să încarce biblioteca de baze de date atunci când se încarcă
Pasul 1) Deschideți următorul fișier application / config / autoload.php
Pasul 2) Găsiți bibliotecile de chei ale matricei $ autoload și încărcați biblioteca de baze de date așa cum se arată mai jos
$autoload['libraries'] = array('database');
AICI,
- Codul de mai sus încarcă biblioteca de baze de date la pornirea aplicației
CodeIgniter Insert Active Record
În scopuri de testare, vom crea un controler și rute definite pe care le vom folosi pentru a interacționa cu aplicația noastră prin înregistrare activă.
Creați un nou fișier application / controllers / ActiveRecordController.php
Adăugați următorul cod la ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
AICI,
- $ data = [...] definește o variabilă matrice de date care utilizează numele tabelelor bazei de date ca chei matrice și le atribuie valori
- $ this-> db-> insert ('comenzi', $ date); apelează metoda de inserare a bibliotecii bazei de date, trece în parametru numele comenzilor și variabila matricei $ data. Această linie generează instrucțiunea SQL INSERT utilizând tastele matrice ca nume de câmp și valorile matricei ca valori care trebuie inserate în baza de date.
Acum că am creat cu succes metoda controlerului pentru înregistrarea activă, va trebui acum să creăm un traseu pe care îl vom apela pentru a executa metoda controlerului.
Acum deschideți routes.php în application / config / routes.php
adăugați următoarea linie la trasee
$route['ar/insert'] = 'activerecordcontroller/store_order';
AICI,
- Definim un traseu ar / insert care apelează store_order-ul ActiveRecordController.
Să începem acum serverul web pentru a ne testa metoda.
Rulați următoarea comandă pentru a porni serverul încorporat pentru PHP
cd C:\Sites\ci-appphp -S localhost:3000
AICI,
- Browserul de comandă de mai sus către linia de comandă și pornește serverul încorporat la portul 3000.
Încărcați următoarea adresă URL în browser
http: // localhost: 3000 / ar / insert
Veți obține următoarele rezultate
order has successfully been created
Deschideți baza de date tutorial MySQL și verificați tabelul comenzilor
Veți putea să rând nou creat, așa cum se arată în imaginea de mai jos
CodeIgniter Selectați înregistrare activă
În această secțiune, vom vedea cum să citim înregistrările pe care le avem în baza de date și să le afișăm în browserul web ca o listă neordonată
Adăugați următoarea metodă la ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
AICI,
- $ query = $ this-> db-> get ('comenzi'); rulează interogarea selectată în tabelul de comenzi selectând toate câmpurile
- ecou „
Listarea comenzilor
”; afișează un titlu HTML de dimensiunea 3 - ecou „
- ”; tipărește eticheta de deschidere pentru lista HTML neordonată
- foreach ($ interogare-> rezultat () ca $ rând) {...} a folosit bucla for pentru a parcurge rezultatele returnate din baza de date. ecou "
- $ rând-> nume_clijent "; tipărește client_name din baza de date
Înainte de a încărca următoarea adresă URL, puteți încărca încă câteva înregistrări în baza de date.
Să definim acum un traseu pentru interogarea SELECT
Deschideți tabelul application / config / routes.php
Adăugați următoarea rută
$route['ar'] = 'activerecordcontroller';
AICI,
- Traseul ar indică metoda indexului clasei ActiveRecordController. Acesta este în mod implicit, de aceea nu am specificat metoda indexului așa cum ați făcut pentru ruta care introduce înregistrări
Presupunând că serverul web rulează deja, încărcați următoarea adresă URL
http: // localhost: 3000 / ar
Ar trebui să puteți vedea rezultate care sunt foarte similare cu următoarele în browserul dvs. web
Actualizare înregistrare activă CodeIgniter
În această secțiune, vom vorbi despre cum să utilizați înregistrarea activă pentru a actualiza baza de date. Să presupunem că vrem să actualizăm numele clientului Joe Thomas în Joe.
Adăugați următoarea metodă la clasa 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';}
AICI,
- $ data = […] definește câmpurile și valorile pe care dorim să le actualizăm în tabelul bazei de date
- $ this-> db-> where ('id', 1); setează clauza unde a interogării de actualizare
- $ this-> db-> update ('comenzi', $ date); generează interogarea de actualizare SQL și o execută în baza noastră de date.
Codul de mai sus va produce următoarea instrucțiune SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Să actualizăm acum routes.php application / config / routes.php
Adăugați următoarea rută
$route['ar/update'] = 'activerecordcontroller/update_order';
Salvați modificările
Încărcați următoarea adresă URL în browserul web
Să afișăm acum înregistrările bazei de date și să vedem dacă modificările au fost afectate.
După cum puteți vedea din imaginea prezentată mai sus, prima înregistrare a fost actualizată de la Joe Thomas la Joe.
CodeIgniter Delete Active Record
Acum vom șterge o înregistrare din baza de date. Vom șterge înregistrarea cu id-ul 3.
Adăugați următoarea metodă la ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
AICI,
- $ this-> db-> where ('id', 1); stabilește clauza unde
- $ this-> db-> delete ('comenzi'); șterge rândul bazei de date din tabelul de comenzi pe baza criteriilor stabilite folosind clauza where.
Pentru a executa codul de mai sus, încărcați următoarea adresă URL în browserul nostru web
http: // localhost: 3000 / ar / delete
rezumat
În acest tutorial, ați învățat cum să lucrați cu o înregistrare activă pentru a insera, actualiza, șterge și selecta înregistrări din baza de date. Am lucrat cu valori statice pentru a crea înregistrări, actualizare și ștergere. În următorul tutorial, vom crea o interfață cu utilizatorul pe care utilizatorul o poate folosi pentru a crea înregistrări dinamic în baza de date.