Налаштування бази даних
Огляд варіантів конфігурації для бази даних 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, де ###
представляє ім'я
з'єднання:
Ім'я | Тип | Опис |
---|---|---|
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)