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: ...

Se creează servicii de tip Nette\Database\Connection și Nette\Database\Explorer pentru stratul Database Explorer. Conexiunea la baza de date este de obicei transmisă prin autocablare, dacă acest lucru nu este posibil, utilizați numele serviciilor @database.default.connection resp. @database.default.explorer.

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 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:'

Fiecare conexiune definită creează servicii care includ numele secțiunii în numele lor, adică @database.main.connection & @database.main.explorer și mai departe @database.another.connection & @database.another.explorer.

Cablarea automată este activată numai pentru serviciile din prima secțiune. Acest lucru poate fi modificat cu autowired: false sau autowired: true. Serviciile care nu sunt conectate automat sunt transmise după nume:

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