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

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

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

Една връзка

Създайте единична връзка към базата данни:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

база данных:
	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:'

Автоматичното свързване е разрешено само за услугите от първия раздел. Това може да се промени с помощта на 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.

Неавтентифицираните услуги предаваме изрично, като се позоваваме на тяхното име:

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