Настройка базы данных
Обзор вариантов конфигурации для базы данных Nette.
Если вы используете не весь фреймворк, а только эту библиотеку, прочитайте Как загрузить файл конфигурации.
Одно подключение
Настройте одно подключение к базе данных:
database:
# DSN, единственный обязательный ключ
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Создает сервисы Nette\Database\Connection
и Nette\Database\Explorer
, которые
обычно передаются автоподключением или ссылкой на их имя.
Другие настройки:
database:
# отображает панель Database в Tracy Bar
debugger: ... # (bool) по умолчанию true
# отображает запрос EXPLAIN в Tracy Bar
explain: ... # (bool) по умолчанию true
# включить автосвязывание для этого соединения
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
# возвращает столбцы даты как неизменяемые объекты (с версии 3.2.1)
newDateTime: # (bool) по умолчанию false
# только для Oracle и SQLite: формат даті
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 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)