Настройка базы данных
Обзор вариантов конфигурации для базы данных Nette.
Если вы используете не весь фреймворк, а только эту библиотеку, прочитайте Как загрузить файл конфигурации.
Одно подключение
Настройте одно подключение к базе данных:
database:
# DSN, единственный обязательный ключ
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Он создает службы типа Nette\Database\Connection
, а также
Nette\Database\Explorer
для уровня Database
Explorer. Подключение к базе данных обычно передается автоподключением,
если это невозможно, используйте имена сервисов @database.default.connection
и @database.default.context
.
Другие настройки:
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' ('utf8' до v5.5.3)
# только для 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:'
Каждое определенное соединение создает сервисы, включающие имя
секции в свое имя, т. е. @database.main.connection
& @database.main.context
и
далее @database.another.connection
& @database.another.context
.
Автосвязывание включено только для сервисов из первой секции. Это
можно изменить с помощью autowired: false
или autowired: true
.
Неавтоматизированные сервисы передаются по имени:
services:
- UserFacade(@database.another.connection)