Konfiguracija podatkovne baze

Pregled konfiguracijskih možnosti za Nette Database.

Če ne uporabljate celotnega ogrodja, ampak samo to knjižnico, preberite, kako naložiti konfiguracijo.

Ena povezava

Konfiguracija ene podatkovne povezave:

database:
	# DSN, edini obvezni ključ
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Ustvari storitvi Nette\Database\Connection in Nette\Database\Explorer, ki si jih običajno posredujemo z autowiringom, ali pa s sklicem na njihovo ime.

Druge nastavitve:

database:
	# prikazati ploščo podatkovne baze v Tracy Bar?
	debugger: ...     # (bool) privzeto je true

	# prikazati EXPLAIN poizvedb v Tracy Bar?
	explain: ...      # (bool) privzeto je true

	# dovoliti autowiring za to povezavo?
	autowired: ...    # (bool) privzeto je true pri prvi povezavi

	# konvencije tabel: discovered, static ali ime razreda
	conventions: discovered  # (string) privzeto je 'discovered'

	options:
		# povezati se s podatkovno bazo šele, ko je potrebno?
		lazy: ...     # (bool) privzeto je false

		# PHP razred gonilnika podatkovne baze
		driverClass:  # (string)

		# samo MySQL: nastavi sql_mode
		sqlmode:      # (string)

		# samo MySQL: nastavi SET NAMES
		charset:      # (string) privzeto je 'utf8mb4'

		# samo MySQL: pretvori TINYINT(1) v bool
		convertBoolean:  # (bool) privzeto je false

		# vrača stolpce z datumom kot nespremenljive objekte (od različice 3.2.1)
		newDateTime:  # (bool) privzeto je false

		# samo Oracle in SQLite: format za shranjevanje datuma
		formatDateTime: # (string) privzeto je 'U'

V ključu options lahko navajate druge možnosti, ki jih najdete v dokumentaciji gonilnikov PDO, kot na primer:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Več povezav

V konfiguraciji lahko definiramo tudi več podatkovnih povezav z razdelitvijo na poimenovane sekcije:

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

	another:
		dsn: 'sqlite::memory:'

Autowiring je vklopljen samo pri storitvah iz prve sekcije. To lahko spremenite s pomočjo autowired: false ali autowired: true.

Storitve DI

Te storitve se dodajo v DI vsebnik, kjer ### predstavlja ime povezave:

Ime Tip Opis
database.###.connection Nette\Database\Connection povezava s podatkovno bazo
database.###.explorer Nette\Database\Explorer Database Explorer

Če definiramo samo eno povezavo, bosta imeni storitev database.default.connection in database.default.explorer. Če definiramo več povezav kot v zgornjem primeru, bodo imena ustrezala sekcijam, tj. database.main.connection, database.main.explorer in naprej database.another.connection ter database.another.explorer.

Ne-autowirane storitve posredujemo eksplicitno s sklicem na njihovo ime:

services:
	- UserFacade(@database.another.connection)
različica: 4.0