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žbu Nette\Database\Connection
a Nette\Database\Explorer
pro vrstvu Database Explorer. Databáze se obvykle předává autowiringem, není-li to možné, použijte názvy služeb
@database.default.connection
resp. @database.default.explorer
.
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' ('utf8' před verzí 5.5.3)
# 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:'
Každé takto definované spojení vytváří služby zahrnující v názvu i název sekce, tj.
@database.main.connection
& @database.main.explorer
a dále
@database.another.connection
& @database.another.explorer
.
Autowiring je zapnutý jen u služeb z první sekce. Lze to změnit pomocí autowired: false
nebo
autowired: true
. Neautowirované služby předáváme explicitně:
services:
- UserFacade(@database.another.connection)