Configurarea bazei de date

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

Dacă nu utilizați întregul cadru, ci doar această bibliotecă, citiți cum se încarcă configurația.

Conexiune unică

Configurați o singură conexiune la baza de date:

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

Creează serviciile Nette\Database\Connection și Nette\Database\Explorer, care sunt de obicei trecute prin autocablare sau prin referire la numele lor.

Alte setări:

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

	# afișează interogarea EXPLAIN în Tracy Bar?
	explain: ...      # (bool) implicit la true

	# pentru a activa cablarea automată pentru această conexiune?
	autowired: ...    # (bool) implicit la true pentru prima conexiune

	# convenții pentru tabele: descoperit, static sau nume de clasă
	conventions: discovered  # (string) valoarea implicită este "discovered" (descoperit)

	options:
		# să se conecteze la baza de date numai atunci când este necesar?
		lazy: ...     # (bool) valoarea implicită este false

		# Clasa driverului de bază de date PHP
		driverClass:  # (string)

		# numai MySQL: stabilește sql_mode
		sqlmode:      # (string)

		# numai MySQL: stabilește SET NAMES
		charset:      # (șir de caractere) implicit la "utf8mb4" ("utf8" înainte de v5.5.3)

		# numai MySQL: convertește TINYINT(1) în bool
		supportBooleans: # (bool) implicit la false

		# numai Oracle și SQLite: formatul datei
		formatDateTime: # (șir de caractere) implicit la "U".

Cheia options poate conține și alte opțiuni care pot fi găsite în documentația driverului PDO, cum ar fi:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Conexiuni multiple

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

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

	another:
		dsn: 'sqlite::memory:'

Cablarea automată este activată numai pentru serviciile din prima secțiune. Acest lucru poate fi modificat cu ajutorul autowired: false sau autowired: true.

Servicii DI

Aceste servicii sunt adăugate la 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 o singură conexiune, numele serviciului va 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 neautentificate sunt trecute în mod explicit prin referire la numele lor:

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