I dati sono la linea di sangue della maggior parte delle applicazioni. I dati devono essere archiviati in modo tale da poter essere ulteriormente analizzati per fornire approfondimenti e facilitare le decisioni aziendali. I dati vengono solitamente archiviati nel database. Tra le principali preoccupazioni quando si interagisce con il database vi sono la sicurezza, la facilità di accesso e le implementazioni specifiche del fornitore di database di Structured Query Language (SQL).
Active record è un modello di progettazione che semplifica l'interazione con il database in modo semplice, sicuro ed eloquente.
Il record attivo presenta i seguenti vantaggi
- Inserisci, aggiorna ed elimina i record con semplici catene di metodi di record attivi
- Invia l'input dell'utente in modo sicuro utilizzando i parametri
- Consente di lavorare con più motori di database come MySQL, SQL Server, ecc. Senza riscrivere il codice dell'applicazione
- CodeIgniter utilizza driver specifici per ogni motore di database in background.
In questo tutorial imparerai:
- Come utilizzare Active Record: esempio
- Configurazione del database CodeIgniter
- CodeIgniter Inserisci record attivo
- CodeIgniter Seleziona record attivo
- CodeIgniter Aggiorna record attivo
- CodeIgniter Elimina record attivo
Come utilizzare Active Record: esempio
In questo tutorial, discuteremo del database del tutorial. Avremo due tabelle, una con gli ordini e l'altra con i dettagli.
Questo tutorial presuppone che il database MySQL sia installato e funzionante.
Esegui i seguenti script per creare il database del 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;
Il codice precedente crea un database denominato ci_active_record e crea due tabelle, ovvero orders e order_details. La relazione tra le due tabelle è definita dall'id della colonna in orders e order_id nella tabella order_details.
Configurazione del database CodeIgniter
Configureremo ora la nostra applicazione per poter comunicare con questo database.
Apri il file di configurazione del database che si trova in application / config / database.php
individuare le seguenti righe nel file di configurazione
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Aggiorna il codice sopra come segue
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Nota: dovrai sostituire il nome utente e la password con quelli che corrispondono alla tua configurazione di MySQL.
Oltre ai dettagli di configurazione del database, dobbiamo anche dire a CodeIgniter di caricare la libreria del database quando viene caricata
Passaggio 1) Apri il seguente file application / config / autoload.php
Passaggio 2) Individuare le librerie di chiavi dell'array $ autoload e caricare la libreria del database come mostrato di seguito
$autoload['libraries'] = array('database');
QUI,
- Il codice precedente carica la libreria del database all'avvio dell'applicazione
CodeIgniter Inserisci record attivo
A scopo di test, creeremo un controller e percorsi definiti che utilizzeremo per interagire con la nostra applicazione tramite record attivo.
Crea un nuovo file application / controllers / ActiveRecordController.php
Aggiungi il codice seguente a ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
QUI,
- $ data = […] definisce un dato variabile di matrice che utilizza i nomi delle tabelle del database come chiavi di matrice e assegna loro dei valori
- $ this-> db-> insert ('orders', $ data); chiama il metodo di inserimento della libreria del database, passa gli ordini dei nomi della tabella e la variabile di matrice $ data come parametro. Questa riga genera l'istruzione SQL INSERT utilizzando le chiavi della matrice come nomi di campo e i valori della matrice come valori da inserire nel database.
Ora che abbiamo creato con successo il metodo del controller per il record attivo, avremo ora bisogno di creare una rotta che chiameremo per eseguire il metodo del controller.
Ora apri route.php in application / config / routes.php
aggiungere la seguente riga alle rotte
$route['ar/insert'] = 'activerecordcontroller/store_order';
QUI,
- Definiamo una route ar / insert che chiama store_order di ActiveRecordController.
Avviamo ora il server web per testare il nostro metodo.
Esegui il seguente comando per avviare il server integrato per PHP
cd C:\Sites\ci-appphp -S localhost:3000
QUI,
- Il browser dei comandi sopra alla riga di comando e avvia il server integrato sulla porta 3000.
Carica il seguente URL nel tuo browser
http: // localhost: 3000 / ar / insert
Otterrai i seguenti risultati
order has successfully been created
Apri il database del tutorial MySQL e controlla la tabella degli ordini
Sarai in grado di creare una nuova riga come mostrato nell'immagine qui sotto
CodeIgniter Seleziona record attivo
In questa sezione vedremo come leggere i record che abbiamo nel database e visualizzarli nel browser web come un elenco non ordinato
Aggiungi il metodo seguente a ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
QUI,
- $ query = $ this-> db-> get ('orders'); esegue la query di selezione sulla tabella degli ordini selezionando tutti i campi
- echo "
Elenco ordini
"; mostra un'intestazione HTML di dimensione 3 - echo "
- "; stampa il tag di apertura per l'elenco HTML non ordinato
- foreach ($ query-> result () as $ row) {…} ha utilizzato il ciclo for per scorrere i risultati restituiti dal database. echo "
- $ row-> customer_name "; stampa il nome_cliente dal database
Prima di caricare il seguente URL, puoi caricare un altro paio di record nel database.
Definiamo ora un percorso per la query SELECT
Apri la tabella application / config / routes.php
Aggiungi il seguente percorso
$route['ar'] = 'activerecordcontroller';
QUI,
- La route ar punta al metodo index della classe ActiveRecordController. Questo è per impostazione predefinita, ecco perché non abbiamo specificato il metodo dell'indice come hai fatto per la rotta che inserisce i record
Supponendo che il server web sia già in esecuzione, carica il seguente URL
http: // localhost: 3000 / ar
Dovresti essere in grado di vedere risultati molto simili ai seguenti nel tuo browser web
CodeIgniter Aggiorna record attivo
In questa sezione parleremo di come utilizzare il record attivo per aggiornare il database. Supponiamo di voler aggiornare il nome del cliente Joe Thomas a Joe.
Aggiungere il metodo seguente alla classe 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';}
QUI,
- $ data = […] definisce i campi e i valori che desideriamo aggiornare nella tabella del database
- $ questo-> db-> dove ('id', 1); imposta la clausola where della query di aggiornamento
- $ this-> db-> update ('orders', $ data); genera la query di aggiornamento SQL e la esegue sul nostro database.
Il codice precedente produrrà la seguente istruzione SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Aggiorniamo ora l'applicazione route.php / config / routes.php
Aggiungi il seguente percorso
$route['ar/update'] = 'activerecordcontroller/update_order';
Salva le modifiche
Carica il seguente URL nel browser web
Visualizziamo ora i record del database e vediamo se le modifiche sono state influenzate.
Come puoi vedere dall'immagine sopra, il primo record è stato aggiornato da Joe Thomas a Joe.
CodeIgniter Elimina record attivo
Ora elimineremo un record dal database. Elimineremo il record con l'id 3.
Aggiungi il metodo seguente a ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
QUI,
- $ questo-> db-> dove ('id', 1); imposta la clausola where
- $ this-> db-> delete ('orders'); elimina la riga del database nella tabella degli ordini in base ai criteri impostati utilizzando la clausola where.
Per eseguire il codice sopra, caricare il seguente URL nel nostro browser web
http: // localhost: 3000 / ar / delete
Sommario
In questo tutorial, hai imparato come lavorare con un record attivo per inserire, aggiornare, eliminare e selezionare i record dal database. Abbiamo lavorato con valori statici per creare record, aggiornare ed eliminare. Nel prossimo tutorial, creeremo un'interfaccia utente che l'utente può utilizzare per creare record dinamicamente nel database.