Configurarea bazei de date

Prezentare generală a opțiunilor de configurare pentru Nette Database.

Dacă nu utilizați întregul framework, ci doar această bibliotecă, citiți cum să încărcați configurația.

O singură conexiune

Configurarea unei singure conexiuni la baza de date:

database:
	# DSN, singura cheie obligatorie
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Creează serviciile Nette\Database\Connection și Nette\Database\Explorer, pe care de obicei le transmitem prin autowiring, eventual prin referință la numele lor.

Alte setări:

database:
	# afișează panoul database în Tracy Bar?
	debugger: ...     # (bool) implicit este true

	# afișează EXPLAIN pentru interogări în Tracy Bar?
	explain: ...      # (bool) implicit este true

	# permite autowiring pentru această conexiune?
	autowired: ...    # (bool) implicit este true la prima conexiune

	# convenții pentru tabele: discovered, static sau numele clasei
	conventions: discovered  # (string) implicit este 'discovered'

	options:
		# conectare la baza de date doar când este necesar?
		lazy: ...     # (bool) implicit este false

		# clasa PHP a driverului bazei de date
		driverClass:  # (string)

		# doar MySQL: setează sql_mode
		sqlmode:      # (string)

		# doar MySQL: setează SET NAMES
		charset:      # (string) implicit este 'utf8mb4'

		# doar MySQL: convertește TINYINT(1) la bool
		convertBoolean:  # (bool) implicit este false

		# returnează coloanele cu dată ca obiecte imutabile (de la versiunea 3.2.1)
		newDateTime:  # (bool) implicit este false

		# doar Oracle și SQLite: format pentru stocarea datei
		formatDateTime: # (string) implicit este 'U'

În cheia options se pot specifica și alte opțiuni, pe care le găsiți în documentația driverelor PDO, cum ar fi:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Mai multe conexiuni

În configurație putem defini și mai multe conexiuni la baza de date împărțindu-le în secțiuni numite:

database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'

Autowiring-ul este activat doar pentru serviciile din prima secțiune. Acest lucru poate fi schimbat folosind autowired: false sau autowired: true.

Servicii DI

Aceste servicii sunt adăugate în containerul DI, unde ### reprezintă numele conexiunii:

Nume Tip Descriere
database.###.connection Nette\Database\Connection conexiune la baza de date
database.###.explorer Nette\Database\Explorer Database Explorer

Dacă definim doar o singură conexiune, numele serviciilor vor fi database.default.connection și database.default.explorer. Dacă definim mai multe conexiuni ca în exemplul de mai sus, numele vor corespunde secțiunilor, adică database.main.connection, database.main.explorer și apoi database.another.connection și database.another.explorer.

Serviciile ne-autowired le transmitem explicit prin referință la numele lor:

services:
	- UserFacade(@database.another.connection)
versiune: 4.0