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 Umetanje aktivnog zapisa

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 Odaberite Active Record

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

CodeIgniter ažuriranje aktivnog zapisa

Prikažimo sada zapise baze podataka i vidimo jesu li promjene utjecale.

CodeIgniter ažuriranje aktivnog zapisa

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.