Database Nette
Nette Database è un livello di database potente ed elegante per PHP, con un'attenzione particolare alla semplicità e alle funzioni intelligenti. Offre due modi complementari di lavorare con i dati: utilizzando l'Explorer per lo sviluppo rapido o il metodo SQL per il pieno controllo delle query.
Modo SQL
- Query sicure e parametrizzate
- Controllo preciso sulla struttura delle query SQL
- Ideale per scrivere query complesse con funzioni avanzate
- Ottimizzazione delle prestazioni grazie a funzioni SQL specifiche
La via dell'esploratore
- Sviluppo veloce senza scrivere SQL
- Gestione intuitiva delle relazioni tra tabelle
- Ottimizzazione automatica delle query
- Ottimo per interazioni rapide e convenienti con il database
Installazione
È possibile scaricare e installare la libreria utilizzando Composer:
Database supportati
Nette Database supporta i seguenti database:
Server di database | Nome DSN | Supporto Explorer |
---|---|---|
MySQL (>= 5.1) | mysql | SI' |
PostgreSQL (>= 9.0) | pgsql | SÌ |
SQLite 3 (>= 3.8) | sqlite | SÌ |
Oracle | oci | NO |
MS SQL (PDO_SQLSRV) | sqlsrv | SI' |
MS SQL (PDO_DBLIB) | mssql | NO |
ODBC | odbc | NO |
Due approcci al lavoro sui database
Con Nette Database, è possibile scrivere direttamente le query SQL (metodo SQL) o lasciare che l'SQL venga generato automaticamente (metodo Explorer). Vediamo come entrambi gli approcci risolvono gli stessi compiti:
Modo SQL – Scrittura di query SQL
Modo Explorer – Generazione automatica di SQL
L'approccio Explorer genera e ottimizza automaticamente le query SQL. Nell'esempio precedente, il metodo SQL genera N+1 query (una per gli autori e una per i libri di ciascun autore), mentre Explorer esegue solo due query ottimizzate, una per gli autori e una per tutti i loro libri.
È possibile combinare liberamente entrambi gli approcci nella propria applicazione, a seconda delle necessità.
Connessione e configurazione
Per connettersi al database, è sufficiente creare un'istanza della classe Nette\Database\Connection:
Il parametro $dsn
(nome dell'origine dati) segue lo stesso formato utilizzato da PDO, ad esempio
host=127.0.0.1;dbname=test
. Se la connessione fallisce, viene lanciata l'istanza
Nette\Database\ConnectionException
.
Tuttavia, un metodo più comodo è quello di utilizzare la configurazione dell'applicazione.
Aggiungendo una sezione database
, verranno creati gli oggetti necessari, compreso un pannello del database nella
barra di debug di Tracy.
Dopodiché, l'oggetto connessione può essere recuperato come servizio dal contenitore DI, ad esempio:
Per ulteriori informazioni, vedere Configurazione del database.
Creazione manuale di Explorer
Se non si utilizza il contenitore Nette DI, è possibile creare manualmente un'istanza di
Nette\Database\Explorer
:
Gestione delle connessioni
Quando si crea un oggetto Connection
, questo si connette automaticamente al database. Se si vuole ritardare la
connessione, attivare la modalità pigra nella configurazione, impostando lazy
,
oppure procedere in questo modo:
Per gestire la connessione, utilizzare i metodi connect()
, disconnect()
, e
reconnect()
.
connect()
stabilisce una connessione se non è già stata stabilita e può lanciare unNette\Database\ConnectionException
.disconnect()
si disconnette dal database.reconnect()
si disconnette e poi si riconnette al database e può anche lanciare unNette\Database\ConnectionException
.
Inoltre, è possibile monitorare gli eventi di connessione utilizzando l'evento onConnect
, che è un array di
callback eseguiti dopo la connessione al database.
Barra di Debug Tracy
Se si utilizza Tracy, il pannello Database della barra di debug viene automaticamente attivato. Esso visualizza tutte le query eseguite, i loro parametri, il tempo di esecuzione e la posizione nel codice in cui sono state chiamate.
