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"

	# uživatelské jméno
	user: ...

	# heslo
	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)

		# lze uvádět volby, které najdete v dokumentaci ovladačů PDO
		PDO::MYSQL_ATTR_COMPRESS: true

		# 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í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)