Înregistrare activă Codeigniter: inserați, selectați, actualizați, ștergeți

Datele sunt linia de sânge a majorității aplicațiilor. Datele trebuie stocate astfel încât să poată fi analizate în continuare pentru a oferi informații și a facilita deciziile de afaceri. Datele sunt de obicei stocate în baza de date. Printre preocupările principale atunci când interacționați cu baza de date se numără securitatea, ușurința de acces și implementările specifice furnizorului de baze de date ale limbajului de interogare structurat (SQL).

Înregistrarea activă este un model de design 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 lanțuri de metode simple de înregistrare activă
  • Trimite intrarea utilizatorului î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 pentru fiecare motor de bază de date în fundal.

Cum se utilizează Active Record: Exemplu

În acest tutorial, vom discuta baza de date tutorial. Vom avea două mese, unul cu comenzi, celălalt cu detalii.

Acest tutorial presupune că aveți MySQL baza de date instalată și în funcțiune.

Rulați următoarele scripturi pentru a crea baza de date tutorial:

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 orders și order_details. Relația dintre cele două tabele este definită de id-ul coloanei în orders și order_id în tabelul order_details.

Configurarea bazei de date CodeIgniter

Acum vom configura 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 rânduri în fișierul de configurare

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

Actualizați codul de mai sus la următoarele

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

Notă: va trebui să înlocuiți numele de utilizator și parola cu cele care corespund configurației dvs MySQL.

Pe lângă detaliile de configurare a bazei de date, trebuie să îi spunem lui CodeIgniter să încarce biblioteca bazei de date atunci când se încarcă

Pas 1) Deschideți următorul fișier application/config/autoload.php

Pas 2) Localizați bibliotecile de chei ale matricei $autoload și încărcați biblioteca bazei de date așa cum se arată mai jos

$autoload['libraries'] = array('database');

AICI,

  • Codul de mai sus încarcă biblioteca bazei de date când pornește aplicația

CodeIgniter Inserați înregistrarea activă

Î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 înregistrarea activă.

Creați un fișier nou aplicație/controllers/ActiveRecordController.php

Adăugați următorul cod la 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';
    }
}

AICI,

  • $data = […] definește o matrice de date variabile care utilizează numele tabelelor bazei de date ca chei de matrice și le atribuie valori
  • $this->db->insert('comenzi', $date); apelează metoda de inserare a bibliotecii baze de date, trece ordinele de nume de tabel și variabila matrice $data ca parametru. Această linie generează instrucțiunea SQL INSERT utilizând cheile 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ă, acum va trebui să creăm o rută pe care o vom apela pentru a executa metoda controlerului.

Acum deschide routes.php în application/config/routes.php

adăugați următoarea linie la rute

$route['ar/insert'] = 'activerecordcontroller/store_order';

AICI,

  • Definim o rută ar/insert care apelează store_order al ActiveRecordController.

Să pornim acum serverul web pentru a testa metoda noastră.

Rulați următoarea comandă pentru a porni serverul încorporat pentru PHP

cd C:\Sites\ci-app
php -S localhost:3000

AICI,

  • Browserul de comandă de mai sus la linia de comandă și porniți 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 MySQL baza de date tutorial și verificați tabelul comenzilor

Veți putea să creați un rând nou, așa cum se arată în imaginea de mai jos

CodeIgniter Inserați înregistrarea activă

CodeIgniter Selectați înregistrarea 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 "<h3>Orders Listing</h3>";
        echo "<ul>";
        
        foreach ($query->result() as $row) {
            echo "<li>$row->customer_name</li>";
        }
        
        echo "</ul>";
    }

AICI,

  • $interogare = $this->db->get('comenzi'); rulează interogarea de selectare pe tabelul de comenzi selectând toate câmpurile
  • ecou” Lista comenzilor ”; afișează un titlu HTML de dimensiunea 4
  • ecou” ”; tipărește eticheta de deschidere pentru lista HTML neordonată
  • foreach ($query->result() as $row) {…} a folosit bucla for pentru a parcurge rezultatele returnate din baza de date. ecou” $row->nume_client ”; imprimă numele_client din baza de date

Înainte de a încărca următorul URL, puteți încărca încă câteva înregistrări în baza de date.

Să definim acum o rută pentru interogarea SELECT

Deschideți tabelul application/config/routes.php

Adăugați următorul traseu

$route['ar'] = 'activerecordcontroller';

AICI,

  • Ruta ar indică metoda index a clasei ActiveRecordController. Acesta este în mod implicit și de aceea nu am specificat metoda de indexare, așa cum ați făcut pentru ruta care inserează î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 asemănătoare cu următoarele în browserul dvs. web

CodeIgniter Selectați înregistrarea activă

CodeIgniter Actualizare înregistrare activă

În această secțiune, vom vorbi despre cum să folosiți înregistrarea activă pentru a actualiza baza de date. Să presupunem că vrem să actualizăm numele clientului Joe Thomas la 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 where 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 aplicația routes.php/config/routes.php

Adăugați următorul traseu

$route['ar/update'] = 'activerecordcontroller/update_order';

Salvați modificările

Încărcați următoarea adresă URL în browserul web

CodeIgniter Actualizare înregistrare activă

Să afișăm acum înregistrările bazei de date și să vedem dacă modificările au fost afectate.

CodeIgniter Actualizare înregistrare activă

După cum puteți vedea din imaginea de mai sus, prima înregistrare a fost actualizată de la Joe Thomas la Joe.

CodeIgniter Șterge înregistrarea activă

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 where
  • $this->db->delete('comenzi'); șterge rândul bazei de date din tabelul de comenzi pe baza criteriilor setate 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, a actualiza și a șterge. Î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.