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)