Конфигурация на базата данни

Преглед на конфигурационните опции за Nette Database.

Ако не използвате целия framework, а само тази библиотека, прочетете как да заредите конфигурацията.

Една връзка

Конфигурация на една връзка към база данни:

database:
	# DSN, единственият задължителен ключ
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Създава сървисите Nette\Database\Connection и Nette\Database\Explorer, които обикновено предаваме чрез autowiring, или чрез връзка към тяхното име.

Други настройки:

database:
	# покажи панела на базата данни в Tracy Bar?
	debugger: ...     # (bool) по подразбиране е true

	# покажи EXPLAIN на заявките в Tracy Bar?
	explain: ...      # (bool) по подразбиране е true

	# разреши autowiring за тази връзка?
	autowired: ...    # (bool) по подразбиране е true при първата връзка

	# конвенции за таблици: discovered, static или име на клас
	conventions: discovered  # (string) по подразбиране е 'discovered'

	options:
		# свързване към базата данни само когато е необходимо?
		lazy: ...     # (bool) по подразбиране е false

		# PHP клас на драйвера на базата данни
		driverClass:  # (string)

		# само MySQL: задава sql_mode
		sqlmode:      # (string)

		# само MySQL: задава SET NAMES
		charset:      # (string) по подразбиране е 'utf8mb4'

		# само MySQL: преобразува TINYINT(1) в bool
		convertBoolean:  # (bool) по подразбиране е false

		# връща колони с дата като immutable обекти (от версия 3.2.1)
		newDateTime:  # (bool) по подразбиране е false

		# само Oracle и SQLite: формат за съхранение на дата
		formatDateTime: # (string) по подразбиране е 'U'

В ключа options могат да се посочват други опции, които ще намерите в документацията на PDO драйверите, като например:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Множество връзки

В конфигурацията можем да дефинираме и множество връзки към бази данни, като ги разделим на именувани секции:

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

	another:
		dsn: 'sqlite::memory:'

Autowiring е включен само за сървисите от първата секция. Това може да се промени с помощта на autowired: false или autowired: true.

DI Сървиси

Тези сървиси се добавят към DI контейнера, където ### представлява името на връзката:

Име Тип Описание
database.###.connection Nette\Database\Connection връзка с базата данни
database.###.explorer Nette\Database\Explorer Database Explorer

Ако дефинираме само една връзка, имената на сървисите ще бъдат database.default.connection и database.default.explorer. Ако дефинираме повече връзки, както в примера по-горе, имената ще отговарят на секциите, т.е. database.main.connection, database.main.explorer и след това database.another.connection и database.another.explorer.

Сървисите, които не са autowired, предаваме изрично чрез връзка към тяхното име:

services:
	- UserFacade(@database.another.connection)
версия: 4.0