Konfigurace databáze
Přehled konfiguračních voleb pro Nette Database.
Pokud nepoužívate celý framework, ale jen tuto knihovnu, přečtěte si, jak konfiguraci načíst.
Jedno spojení
Konfigurace jednoho databázového spojení:
database: # DSN, jediný povinný klíč dsn: "sqlite:%appDir%/Model/demo.db" user: ... password: ... Vytvoří služby Nette\Database\Connection a Nette\Database\Explorer, které si obvykle předáváme autowiringem, případně odkazem na jejich název.
Další nastavení:
database: # zobrazit database panel v Tracy Bar? debugger: ... # (bool) výchozí je true # zobrazit EXPLAIN dotazů v Tracy Bar? explain: ... # (bool) výchozí je true # povolit autowiring pro toto spojení? autowired: ... # (bool) výchozí je true u prvního připojení # konvence tabulek: discovered, static nebo jméno třídy conventions: discovered # (string) výchozí je 'discovered' options: # připojovat se k databázi teprve když je potřeba? lazy: ... # (bool) výchozí je false # PHP třída ovladače databáze driverClass: # (string) # pouze MySQL: nastaví sql_mode sqlmode: # (string) # pouze MySQL: nastaví SET NAMES charset: # (string) výchozí je 'utf8mb4' # pouze MySQL: převádí TINYINT(1) na bool convertBoolean: # (bool) výchozí je false # vrací sloupce s datem jako immutable objekty (od verze 3.2.1) newDateTime: # (bool) výchozí je false # pouze Oracle a SQLite: formát pro ukládání data formatDateTime: # (string) výchozí je 'U' V klíči options lze uvádět další volby, které najdete v dokumentaci ovladačů PDO, jako například:
database: options: PDO::MYSQL_ATTR_COMPRESS: true Více spojení
V konfiguraci můžeme definovat i více databázových spojení rozdělením do pojmenovaných sekcí:
database: main: dsn: 'mysql:host=127.0.0.1;dbname=test' user: root password: password another: dsn: 'sqlite::memory:' Autowiring je zapnutý jen u služeb z první sekce. Lze to změnit pomocí autowired: false nebo autowired: true.
Služby DI
Tyto služby se přidávají do DI kontejneru, kde ### představuje název spojení:
| Název | Typ | Popis |
|---|---|---|
database.###.connection | Nette\Database\Connection | spojení s databází |
database.###.explorer | Nette\Database\Explorer | Database Explorer |
Pokud definujeme jen jedno spojení, názvy služeb budou database.default.connection a database.default.explorer. Pokud definujeme více spojení jako v příkladu výše, názvy budou odpovídat sekcím, tj. database.main.connection, database.main.explorer a dále database.another.connection a database.another.explorer.
Neautowirované služby předáváme explicitně odkazem na jejich název:
services: - UserFacade(@database.another.connection)