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

Обзор опций конфигурации для Nette Database.

Если вы не используете весь фреймворк, а только эту библиотеку, прочитайте, как загрузить конфигурацию.

Одно соединение

Конфигурация одного соединения с базой данных:

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.

Неавтовайренные сервисы передаем явно по ссылке на их имя:

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