Nette Database
Nette Database je výkonná a elegantní databázová vrstva pro PHP s důrazem na jednoduchost a chytré funkce. Nabízí dva způsoby práce s databází – Explorer pro rychlý vývoj aplikací, nebo SQL přístup pro přímou práci s dotazy.
SQL přístup
- Bezpečné parametrizované dotazy
- Přesná kontrola nad podobou SQL dotazů
- Když píšete komplexní dotazy s pokročilými funkcemi
- Optimalizujete výkon pomocí specifických SQL funkcí
Explorer
- Vyvíjíte rychle bez psaní SQL
- Intuitivní práce s relacemi mezi tabulkami
- Oceníte automatickou optimalizaci dotazů
- Vhodné pro rychlou a pohodlnout práci s databází
Instalace
Knihovnu stáhnete a nainstalujete pomocí nástroje Composer:
Podporované databáze
Nette Database podporuje následující databáze:
Databázový server | DSN jméno | Podpora v Explorer |
---|---|---|
MySQL (>= 5.1) | mysql | ANO |
PostgreSQL (>= 9.0) | pgsql | ANO |
Sqlite 3 (>= 3.8) | sqlite | ANO |
Oracle | oci | – |
MS SQL (PDO_SQLSRV) | sqlsrv | ANO |
MS SQL (PDO_DBLIB) | mssql | – |
ODBC | odbc | – |
Dva přístupy k databázi
Nette Database vám dává na výběr: můžete buď psát SQL dotazy přímo (SQL přístup), nebo je nechat generovat automaticky (Explorer). Podívejme se, jak oba přístupy řeší stejné úkoly:
SQL přístup – SQL dotazy
Explorer přístup – automatické generování SQL
Explorer přístup generuje a optimalizuje SQL dotazy automaticky. V uvedeném příkladu SQL přístup vygeneruje N+1 dotazů (jeden pro autory a pak jeden pro knihy každého autora), zatímco Explorer automaticky optimalizuje dotazy a provede pouze dva – jeden pro autory a jeden pro všechny jejich knihy.
Oba přístupy lze v aplikaci libovolně kombinovat podle potřeby.
Připojení a konfigurace
Pro připojení k databázi stačí vytvořit instanci třídy Nette\Database\Connection:
Parametr $dsn
(data source name) je stejný, jaký používá PDO, např.
host=127.0.0.1;dbname=test
. V případě selhání vyhodí výjimku
Nette\Database\ConnectionException
.
Nicméně šikovnější způsob nabízí aplikační konfigurace, kam stačí přidat sekci
database
a vytvoří se potřebné objekty a také databázový panel v Tracy baru.
Poté objekt spojení získáme jako službu z DI kontejneru, např.:
Více informací o konfiguraci databáze.
Ruční vytvoření Explorer
Pokud nepoužíváte Nette DI kontejner, můžete instanci Nette\Database\Explorer
vytvořit ručně:
Správa připojení
Při vytvoření objektu Connection
dojde automaticky k připojení. Pokud chcete připojení odložit, použijte
lazy režim – ten zapnete v konfiguraci nastavením lazy
, nebo takto:
Pro správu připojení využijte metody connect()
, disconnect()
a reconnect()
.
connect()
vytvoří připojení, pokud ještě neexistuje, přičemž může vyvolat výjimkuNette\Database\ConnectionException
.disconnect()
odpojí aktuální připojení k databázi.reconnect()
provede odpojení a následné znovu připojení k databázi. Tato metoda může rovněž vyvolat výjimkuNette\Database\ConnectionException
.
Kromě toho můžete sledovat události spojené s připojením pomocí události onConnect
, což je pole
callbacků, které se zavolají po navázání spojení s databází.
Tracy Debug Bar
Pokud používáte Tracy, aktivuje se automaticky panel Database v Debug baru, který zobrazuje všechny provedené dotazy, jejich parametry, dobu vykonání a místo v kódu, kde byly zavolány.