Конфігурація бази даних
Огляд параметрів конфігурації для 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
.
Сервіси без autowiring передаються явно за посиланням на їхню назву:
services:
- UserFacade(@database.another.connection)